Display.syncExec在Callable中无法正常工作

时间:2017-03-03 07:56:52

标签: java concurrency eclipse-plugin runnable callable

我创建了Callable,应该进行syncExec来电。我将Callable委托给RecursiveTask (ForkJoinPool)的子类,该子类执行call的{​​{1}}方法。问题是永远不会到达Callable方法中的代码。你知道为什么以及如何解决这个问题吗?

run

1 个答案:

答案 0 :(得分:1)

ForkJoinPool.invoke阻止当前线程,直到给定任务完成。 Display.syncExec等待直到SWT UI线程执行Display.readAndDispatch,因此它将永远等待,因为ForkJoinPool.invoke阻止了UI线程。

使用ForkJoinPool.execute无阻塞地启动任务,代码可以正常运行。