为什么调用ThreadPoolExecutor.run()?

时间:2012-08-01 16:26:03

标签: java eclipse debugging

  

可能重复:
  Eclipse debugger always blocks on ThreadPoolExecutor without any obvious exception, why?

Eclipse在finally块中的行下面的run()方法中不断挂起执行:workDone(this);

我没有在这里设置任何断点,我的应用似乎按预期工作。

有关为何发生这种情况的任何指示?

   java.util.concurrent.ThreadPoolExecutor

   public void run() {
        try {
            Runnable task = firstTask;
            firstTask = null;
            while (task != null || (task = getTask()) != null) {
                runTask(task);
                task = null;
            }
        } finally {
            workerDone(this);
        }
    }
}

1 个答案:

答案 0 :(得分:3)

您的方法调用workerDone很可能抛出一个异常,该异常未处理并在run方法之外冒泡。因此线程突然结束,但Eclipse允许您在异常转义方法之前检查该情况。这是一个自动的“异常断点”。