我需要在一段時間內將測試數據提供給Swing間隔。數據集很長,因此我使用SwingWorker
在後臺解析它。當將數據提供給GUI(比如說每秒一個項目)時,我可以從SwingWorker
開始Timer
,但這似乎有點矯枉過正。任何不從SwingWorker
本身入睡的理由?睡在SwingWorker?
乾杯
我需要在一段時間內將測試數據提供給Swing間隔。數據集很長,因此我使用SwingWorker
在後臺解析它。當將數據提供給GUI(比如說每秒一個項目)時,我可以從SwingWorker
開始Timer
,但這似乎有點矯枉過正。任何不從SwingWorker
本身入睡的理由?睡在SwingWorker?
乾杯
由於SwingWorker
不上EDT運行,內睡覺是完全正常的。
的SwingWorker被設計用於需要有一個長期運行的 任務運行在後臺線程和 提供更新的用戶界面既可以當 完成,或在處理情況 。
在我看來,Timer
除了SwingWorker
將是矯枉過正。相反,只要可能,即使以不規則的時間間隔發佈解析的測試數據。
當您使SwingWorker進入睡眠狀態時,它將不會加載數據。如果這是需要的,那麼這種方法很好。
如果你想繼續加載數據,只需要調整給GUI的輸入,那麼似乎更好的設計就是在GUI中啓動一個定時器,它會每隔一段時間檢查並從工作人員那裏獲取新數據,而不是工作人員必須將invokeLater
調用回GUI。
由外部同意,因爲沒有保證SwingWorker結束在任何定時器的下一個動作之前定時器+1 – mKorbel 2011-06-07 13:45:53
我想你可以睡在搖擺工(你有自己的線程,所以你可以睡在這個線程) - 我沒有看到任何問題。 – 2011-06-07 12:35:42