日期:2014-05-20  浏览次数:20790 次

JDK1.6中的线程池的生命周期
我在程序中使用了JDK1.6提供的线程池ExecutorService,我想问的问题是,如果当所有的任务都执行完毕之后,如果没有新的任务到来的时候,ExecutorService会在多长的时间之后自动关闭?希望熟悉的牛人能帮忙解答一下。
另外,是不是必须手动地调用shutdown()来关闭ExecutorService线程池呢?如果关闭之后又有新的任务到来的话,会不会导致资源的开销变得更多呢?

希望大家能指点一下,谢谢了!

------解决方案--------------------
不需要关闭,线程池本身会维护核心线程的状态
------解决方案--------------------
核心线程又不会关闭的,没有任务的时候线程处于wait状态
为什么你要纠结在线程关闭上...线程是不能关闭再启用的...一个线程如果结束处理了以后,就不能被再次启动
而且,线程池又不是连接池,还需要考虑关闭的问题
------解决方案--------------------
线程池不会自动关闭

Executors类new出来的大部分线程池都是此类的对象:ThreadPoolExecutor,只不过构造函数传的参数不一样


你可以看下ThreadPoolExecutor的javadoc,描述相当详细