睡在SwingWorker?

时间:2011-06-07 12:31:15

标签: java swing sleep swingworker

我需要在一段时间内将测试数据提供给Swing间隔。数据集很难解析,因此我使用SwingWorker在后​​台解析它。在将数据提供给GUI(例如,每秒一个项目)时,我可以从Timer开始SwingWorker,但这似乎有点过分。有什么理由不在SwingWorker本身内睡觉吗?

干杯

2 个答案:

答案 0 :(得分:4)

由于SwingWorker没有在EDT上运行,所以在内部睡觉是完全正常的。

  

SwingWorker专为各种情况而设计   你需要长时间运行的地方   任务在后台线程中运行   在何时提供UI的更新   完成或处理时。

在我看来,除了Timer之外,SwingWorker会有点矫枉过正。相反,只要发布解析后的测试数据,即使是在不规则的时间间隔。

答案 1 :(得分:3)

当您使SwingWorker进入睡眠状态时,它将不会加载数据。如果需要,那么这种方法很好。

如果你想继续加载数据并且只是按照GUI的速度调整,那么似乎更好的设计是在GUI中启动一个Timer,它将间隔地检查并从工作者中提取新数据,而不是工作者必​​须将invokeLater调用回GUI。