전체 실행을 중단하지 않고 단일 스레드에 Sleep() 사용
멀티스레딩의 기본 측면 중 하나는 스레드를 일시 중지하는 기능입니다. 다른 스레드가 계속 실행되도록 허용하면서 스레드의 실행을 허용합니다. Java에서는 이러한 목적으로 sleep()이 일반적으로 사용됩니다. 그러나 GUI 애플리케이션과 함께 사용하면 sleep()이 의도하지 않은 결과를 초래할 수 있습니다.
문제:
GUI 이벤트를 처리하는 스레드에서 sleep()이 호출되는 경우 , 다른 모든 스레드를 포함하여 전체 애플리케이션이 정지됩니다. 이는 EDT(Event Dispatch Thread)가 모든 GUI 업데이트를 처리하고 sleep()이 이를 차단하기 때문에 발생합니다.
설명:
Swing GUI 기본 애플리케이션과 별도의 스레드인 EDT에서 생성되고 조작됩니다. EDT에서 sleep()이 호출되면 실행이 중단되어 GUI 업데이트가 효과적으로 방지됩니다. 결과적으로 다른 모든 스레드도 강제로 대기하게 되어 애플리케이션이 정지된 것처럼 보입니다.
해결책:
애플리케이션이 정지되는 것을 방지하려면 몇 가지 대안이 있습니다. EDT에 영향을 주지 않고 단일 스레드를 일시 중지하는 메서드:
요약하자면, sleep()은 애플리케이션을 정지시킬 수 있으므로 EDT에서 사용하면 안 됩니다. 대신 Swing Timer, Swing Worker 또는 TimerTask를 사용하여 GUI 업데이트에 영향을 주지 않고 단일 스레드를 일시 중지하세요.
위 내용은 Java Swing 애플리케이션의 이벤트 디스패치 스레드에서 `sleep()`을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!