【发布时间】:2015-09-07 20:51:43
【问题描述】:
处理SwingWorker 类的doInBackground 方法引发的异常的正确方法是从done 方法中调用get 方法,如here 和here 中所述。
get 方法的文档说明如下:
如有必要,等待计算完成,然后检索 结果。
注意:在事件调度线程上调用
get会阻塞所有 事件,包括重绘,从被处理到此SwingWorker已完成。
因此,如果get 方法导致done 方法内的等待,实际上它会阻塞事件调度线程,因为done 方法是在EDT 上执行的。
但是,在对提议的解决方案进行简单测试后,您可能会注意到 EDT 没有被阻塞:出现这种行为是因为在 done 方法中调用了 get 方法,因此在之后调用了 get操作的结果是计算出来的,因此对它的调用不会阻塞 EDT。这个动机正确吗?
【问题讨论】:
标签: java swing exception swingworker event-dispatch-thread