打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
debug 项目自动停止在ThreadPoolExecutor类中的processWorkerExit(w,completedAbruptly)处

1、问题描述

            在eclipse或者集成eclipse的其他开发工具中,在tomcat中部署了项目debug模式启动项目,
      项目启动之后修改项目java源代码,eclipse会自动部署项目到tomcat中。
      但在tomcat自动重启时会自动停止到processWorkerExit(w, completedAbruptly);这一行代码上。
      
      
2、问题出现原因
   
            原因是因为在 java.util.concurrent.ThreadPoolExecutor类中的 runWorker(Worker w)方法上有未捕获的异常信息,源代码如下:
            可见在try之后并没有catch语句。而在eclipse的java debug模式中就有“遇到未捕获异常停止执行”的选项。只要不勾选该项就可以解决该问题了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
final void runWorker(Worker w) {
    Runnable task = w.firstTask;
    w.firstTask =null;
    booleancompletedAbruptly = true;
    try{
        while(task != null || (task = getTask()) != null) {
            w.lock();
            clearInterruptsForTaskRun();
            try{
                beforeExecute(w.thread, task);
                Throwable thrown =null;
                try{
                    task.run();
                }catch (RuntimeException x) {
                    thrown = x;throw x;
                }catch (Error x) {
                    thrown = x;throw x;
                }catch (Throwable x) {
                    thrown = x;throw newError(x);
                }finally {
                    afterExecute(task, thrown);
                }
            }finally {
                task =null;
                w.completedTasks++;
                w.unlock();
            }
        }
        completedAbruptly =false;
    }finally {
        processWorkerExit(w, completedAbruptly);
    }
}

 3、解决方案

           去掉java->debug->suspend execution on uncaught exceptions 选项钱的对勾就行了。如下图所示:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
面试官:线程池中线程抛了异常,该如何处理?
史上最清晰线程池实现原理剖析
突然就懵了!面试官问我:线程池中多余的线程是如何回收的?
ThreadPoolExecutor的任务提交、任务处理、线程复用和维护相关源码分析 | 三石·道
深入理解Java之线程池(中)
专门为了面试而学的Java
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服