在我的應用程序中,我有一個主框架窗口GUI
,它啓動executor
服務中的任務。糾正設計以防止JFrame中的黑屏問題
提交的任務generates
輸出和存儲in a file on Disk
。
o/p一旦生成GUI(觀察者)被通知生成的o/p。
這裏的問題是我在主框架內部保持一個等待循環,並且一旦收到通知,主面板就會在主框架上重新繪製。
對於小任務,這可以很好地工作,但隨着線程任務的大小增加。等待循環時間增加,GUI主窗口變黑,直到計算完成。
你能幫我糾正一下設計嗎?另外在這種情況下,SwingWorker
線程如何能夠提供幫助。
Ahem,OP明確指出「我在主框架內部保留一個等待循環」。正如OP在第一句中明確指出的那樣,這就是保持美國東部時間繁忙,而任務在執行程序線程上運行。這個答案有正確的精神,但似乎你沒有仔細閱讀這個問題。另外,'SwingWorker'不是**完全獨立的線程,它們也使用執行器服務。 – Ordous 2014-10-06 15:02:23
@Ordous,'另外,SwingWorker不是一個完全獨立的線程,它們也使用執行程序服務 - 實現無關緊要。重要的部分是後臺任務在單獨的線程上執行,而不是EDT。我的回答是,你不應該阻止/等待美國東部時間,因爲GUI無法響應事件並進行重新繪製。 – camickr 2014-10-06 16:11:34