Java 终止swt syncExec中挂起的线程池线程

Java 终止swt syncExec中挂起的线程池线程,java,concurrency,swt,threadpool,terminate,Java,Concurrency,Swt,Threadpool,Terminate,处理显示时,线程池线程始终挂起在swt syncExec调用中。如何避免这种情况,并完全关闭线程?在shell disposeListener内调用Shutdownow不起作用 下面的示例显示了由threadpool线程执行的runnable。您可以在此处找到完整的代码: DoSomething中的syncExec()调用导致死锁。如果将syncExec()替换为asynceec()线程池将正常关闭。使用syncExec()有什么具体原因吗 或者,您应该能够从单独的线程运行关机代码,以避免出现问

处理显示时,线程池线程始终挂起在swt syncExec调用中。如何避免这种情况,并完全关闭线程?在shell disposeListener内调用Shutdownow不起作用

下面的示例显示了由threadpool线程执行的runnable。您可以在此处找到完整的代码:

DoSomething
中的
syncExec()
调用导致死锁。如果将
syncExec()
替换为
asynceec()
线程池将正常关闭。使用
syncExec()
有什么具体原因吗


或者,您应该能够从单独的线程运行关机代码,以避免出现问题。

谢谢!!!线程池对通过syncExec()调用获取的数据执行一些操作,因此线程池必须等待结果。
private class DoSomething implements Runnable {
    public void run() {
      try { Thread.sleep( 500 ); } catch( InterruptedException e ) {e.printStackTrace();}
      if( !shell.isDisposed() ) {
        display.syncExec( new Runnable() {
            public void run() {
              drawshit( display );
            }
         });
      }
      }
  }
}