我需要在一段时间内将测试数据提供给Swing间隔。数据集很难解析,因此我使用SwingWorker
在后台解析它。在将数据提供给GUI(例如,每秒一个项目)时,我可以从Timer
开始SwingWorker
,但这似乎有点过分。有什么理由不在SwingWorker
本身内睡觉吗?
干杯
答案 0 :(得分:4)
由于SwingWorker
没有在EDT上运行,所以在内部睡觉是完全正常的。
SwingWorker专为各种情况而设计 你需要长时间运行的地方 任务在后台线程中运行 在何时提供UI的更新 完成或处理时。
在我看来,除了Timer
之外,SwingWorker
会有点矫枉过正。相反,只要发布解析后的测试数据,即使是在不规则的时间间隔。
答案 1 :(得分:3)
当您使SwingWorker进入睡眠状态时,它将不会加载数据。如果需要,那么这种方法很好。
如果你想继续加载数据并且只是按照GUI的速度调整,那么似乎更好的设计是在GUI中启动一个Timer,它将间隔地检查并从工作者中提取新数据,而不是工作者必须将invokeLater
调用回GUI。