2012-08-01 87 views
4

可能重复:
Eclipse debugger always blocks on ThreadPoolExecutor without any obvious exception, why?为什么要调用ThreadPoolExecutor.run()?

Eclipse的连续暂停最后块内)运行内执行(在线以下方法:workDone(本);

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

任何指针为什么发生这种情况?

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

请显示一个简短但完整的程序来演示问题。 – 2012-08-01 16:28:52

+0

workerDone做了什么? – RNJ 2012-08-01 16:29:14

回答

3

在所有可能的方法调用workerDone抛出一个异常,这是未处理和run方法之外冒泡。线程因此被带到了一个突然的结局,但Eclipse让你在异常转义该方法之前检查那种情况。这是一个自动的“异常断点”。