2011-06-07 67 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