2011-06-07 47 views
5

我需要在一段時間內將測試數據提供給Swing間隔。數據集很長,因此我使用SwingWorker在後臺解析它。當將數據提供給GUI(比如說每秒一個項目)時,我可以從SwingWorker開始Timer,但這似乎有點矯枉過正。任何不從SwingWorker本身入睡的理由?睡在SwingWorker?

乾杯

+1

我想你可以睡在搖擺工(你有自己的線程,所以你可以睡在這個線程) - 我沒有看到任何問題。 – 2011-06-07 12:35:42

回答

4

由於SwingWorker不上EDT運行,內睡覺是完全正常的。

的SwingWorker被設計用於需要有一個長期運行的 任務運行在後臺線程和 提供更新的用戶界面既可以當 完成,或在處理情況 。

在我看來,Timer除了SwingWorker將是矯枉過正。相反,只要可能,即使以不規則的時間間隔發佈解析的測試數據。

3

當您使SwingWorker進入睡眠狀態時,它將不會加載數據。如果這是需要的,那麼這種方法很好。

如果你想繼續加載數據,只需要調整給GUI的輸入,那麼似乎更好的設計就是在GUI中啓動一個定時器,它會每隔一段時間檢查並從工作人員那裏獲取新數據,而不是工作人員必須將invokeLater調用回GUI。

+0

由外部同意,因爲沒有保證SwingWorker結束在任何定時器的下一個動作之前定時器+1 – mKorbel 2011-06-07 13:45:53