读书人

ThreadPoolExecutor worker 错误导致c

发布时间: 2012-06-06 16:44:11 作者: rapoo

ThreadPoolExecutor worker 异常导致core thread size减少
假设创建了15个core size的固定大小线程池。
ThreadPoolExecutor discoveryPool = (ThreadPoolExecutor) Executors
.newFixedThreadPool(15);

发现,在跑的过程中,run线程因为异常报错, 结果 core size线程数也降了下来。不再是15个core size了。
请教这种情况应该如何避免?

[解决办法]
应该会自动加上去的吧
[解决办法]
试验了一下,10个线程,5个抛出异常
最后用discoveryPool.getCorePoolSize()得到的值还是10
[解决办法]
应该是线程池里没有一个活着的线程了,当没有任务提交的时候它不会自动创建线程

如果执行完抛出异常的代码再有其它不抛异常的任务提交,就不会退出了

探讨

抛运行时异常。 core size 给15 。 循环给100个线程执行。 每次都抛运行时异常,你看看main 方法是不是结束了。正常的话,应该是 不会结束的。

读书人网 >J2EE开发

热点推荐