Java Swing 애플리케이션에서 Thread.sleep()을 활용하면 전체 오류와 같은 예상치 못한 동작이 발생할 수 있습니다. 사용자 인터페이스(UI)가 정지되거나 응답하지 않습니다. 이는 Thread.sleep()이 Swing 구성 요소를 렌더링하는 스레드인 EDT(Event Dispatch Thread)의 실행을 일시 중지하기 때문에 발생합니다. 결과적으로 EDT는 이벤트 처리 및 UI 업데이트에 실패하여 UI가 정지된 것처럼 보입니다.
제공된 코드 조각에서는 Thread.sleep(1000*5)을 사용하여 루프가 생성되어 검사를 실행합니다. 매시간. 불행하게도 Thread.sleep() 호출은 Swing 구성 요소를 포함하여 EDT를 절전 모드로 전환합니다. 이렇게 하면 UI가 업데이트되거나 사용자 입력에 응답하지 못하게 됩니다.
이 문제를 해결하려면 대신 javax.swing.Timer를 사용할 수 있습니다. 타이머를 사용하면 EDT와 관계없이 주기적으로 작업을 예약할 수 있습니다. 이를 통해 UI 응답성에 영향을 주지 않고 일반적인 작업 실행이 가능합니다.
다음은 타이머를 사용하는 코드의 업데이트된 버전입니다.
<code class="java">Timer t = new Timer(1000 * 5, new ActionListener() { public void actionPerformed(ActionEvent e) { // Execute the check // Update the UI with the check results } }); t.start(); // Start the timer</code>
타이머는 5번마다 예약된 작업(검사)을 실행합니다. EDT를 차단하지 않고 초. 검사가 수행되는 동안 UI는 응답 상태를 유지하며 사용자가 사용할 수 있습니다. 그러면 검사 결과가 ActionListener 내의 UI에 표시될 수 있습니다.
위 내용은 Thread.sleep()은 Java 스윙 애플리케이션의 UI 응답성에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!