这是 SwingWorker 的文档所说的:
-doInBackground()
在工作线程中执行
-process()
在事件调度线程 (AWT EDT) 上异步执行。publish()
就工作线程中的调用而言,它的执行是不可预测的
-完成done()
后在 AWT EDT 中执行doInBackground()
我看不到任何说最后一次调用process()
总是在之前执行的东西done()
(它们都在同一个线程上运行)。
我有多个电话publish()
来自doInBackground()
;发布的对象被拾取process()
并用于更新带有进度报告的 GUI。对文档的字面解释可能意味着可以done()
在最后一次执行之前在 EDT 上安排,process()
因为done()
保证在工作线程之后执行,但process()
记录为不可预测。
我所有的测试都表明它done()
在最后一个之后运行publish()
(这是有道理的,这就是我想要的),但是有没有人看过文档或挖掘代码来验证 SwingWorker 是否旨在保证这种行为?