java程序执行被暂停,我无法进入

时间:2014-05-15 08:49:44

标签: java eclipse multithreading debugging

我在Eclipse中使用ExecutorService类的项目中工作。好吧,我不熟悉多线程或并发,但我面临的问题是,当我调试时,我无法通过使用步入(F5)继续下一个方法。更具体地说,我把断点放在:

pool.awaitTermination(TERMINATION_TIMEOUT, TimeUnit.DAYS);

我无法继续下去。执行被暂停,如果未经过处理(通过按下暂停按钮),它将停止到java的Unsafe.park(boolean, long),我无法看到代码。在那里我似乎无法继续使用取消暂停或进入。真烦人的是,我可以继续使用简历(F8),这使我进入下一个断点,就像什么也没发生一样。 如果它有任何用处,则参数似乎是TERMINATION_TIMEOUT = 100TimeUnit.DAYS=6

我看过其他帖子,我猜测会抛出异常(ThreadPoolExecutor可能),但建议的解决方案对我不起作用或者我没有设法应用它们。

无论如何,任何想法我怎么能克服这个问题?

1 个答案:

答案 0 :(得分:0)

为什么不在Runnable的{​​{1}}个实例上设置断点,而不是在池上设置断点?

如果由于提交此类ExecutorService的各种地方而无法做到这一点,您可以简单地编写一个Runnable包装器来包装真实任务并捕获抛出的任何异常;然后继承你用来实际运行这样一个捕获Runnable包装器的异常的Runnable。因此,您可以获得所需的所有例外。