2010-12-08 68 views
2

我有一個SwingWorker與實施:Java線程 - 永久循環在Swing事件分派線程

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

      } 
    } 
} 

如果_Update設置爲false,是安全的讓EDT永遠走在一個循環?或者我應該讓它每秒都睡覺?

- 編輯

它看起來像我爲它應該被用來使用的不是SwingWorker的。謝謝大家。我會堅持按照需要創建SwingWorkers。

+0

我不明白你爲什麼要在美國東部時間沾上東西?在那個代碼中你涉及到EDT? – hvgotcodes 2010-12-08 22:18:48

回答

4

讓事件派發線程進入循環並不安全。

需要事件分派線程來提供用戶與應用程序的交互。如果您希望事件每隔幾秒就關閉一次,則應在每次完成時將其或其他副本放回到事件隊列中。

1

爲什麼不開始另一個線程,讓它根據需要運行/休眠,並讓它使用SwingUtilities.InvokeLater或根據需要進行UI工作?

沒有任何其他的上下文,它看起來像你可能會濫用SwingWorker?