2010-12-08 6 views
2

구현과 SwingWorker자바 스레드 - 스윙 이벤트 파견 스레드의 영구 루프

public Void doInBackground() throws InterruptedException 
{ 
    while (true) 
    { 
      while(_update) 
      { 

      } 
    } 
} 

_update false로 설정된 경우 EDT 영구적으로 루프에 갈 수 있습니까? 아니면 내가 매 순간 자도록해야합니까?

- EDIT

SwingWorker를 사용하지 않는 것 같습니다. 모두에게 감사드립니다. 필요한만큼 SwingWorkers를 만드는 데 전념 할 것입니다.

+0

나는 왜 당신이 EDT를 전혀 쓰지 않는지 이해하지 못합니까? 그 코드에서 EDT와 관련이있는 곳은 어디입니까? – hvgotcodes

+1

_update가 false로 설정된 경우 스레드 종료를 허용하지 않고 다시 true로 설정할 때 새 스레드를 생성하는 것은 어떻습니까? –

답변

4

Event Dispatch Thread가 루프에 들어가는 것은 안전하지 않습니다.

이벤트 발송 스레드는 응용 프로그램과 사용자 상호 작용을 제공하는 데 필요합니다. 몇 초마다 이벤트를 끄려면 이벤트를 완료 할 때마다 이벤트 큐에 다시 넣거나 다른 이벤트 복사본을 이벤트 큐에 넣어야합니다.

1

왜 다른 스레드를 시작하고 필요에 따라 실행/잠자 게하고 SwingUtilities.InvokeLater를 사용하거나 필요에 따라 UI 작업을 수행해야합니까?

다른 컨텍스트가 없으면 SwingWorker를 잘못 사용하고있는 것처럼 보입니까?