debug模式下线程ThreadPoolExecutor

  • 原创
  • |
  • 浏览:549
  • |
  • 更新:

eclipse debug模式下线程ThreadPoolExecutor$Worker.run()。

eclipse老是间歇性报ThreadPoolExecutor

工具/原料

  • eclipse debug模式

方法/步骤

  1. 1

    debug模式下启动项目时,发现线程经常会停在 ThreadPoolExecutor$Worker.run() 

  2. 2

    这是因未捕获异常导致的。由于阻塞队列满了,所以pool-1-thread-2进入了等待状态,而由于pool-1-thread-2锁住了PrimeGeneratorForeverRun对象,所以pool-1-thread-1进入了阻塞状态,因此即使这时我们调用了PrimeGeneratorForeverRun.cancel()方法,也无法停止生成质素的循环,因为线程一个处于等待状态,一个处于阻塞状态,都不能取校验cancelled标志位,所以线程只能保持源状态继续,而守护线程中我们用的是shutdown,只要有线程在运行那么线程池就不会关闭,因此程序将一直运行。

  3. 3

    可在eclipse中修改如下配置:

  4. 4

    1、preferences - java - debug 下suspend execution 里面,把suspend execution on uncaught exceptions勾掉

    debug模式下线程ThreadPoolExecutor
  5. 5

    2、preferences - java - debug - step filtering往里面加一个你不想断点的类或包,然后勾上,如下图:

    debug模式下线程ThreadPoolExecutor
    END
  6. 5
    此文章未经授权抓取自百度经验
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部