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

解决方案 »

  1.   

    是不是ExecutorService线程池在很长时间没有来新的任务的时候会自动关闭?
      

  2.   

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

  3.   

    我理解你的意思,但是我在程序中发现了一个问题,当程序中的ExecutorService线程池中所有任务执行结束,大概过了一段时间之后,整个程序就执行完毕并退出了。所以我感觉好像是线程池也关闭了,所以才有这样一问啊!
      

  4.   

    线程池不会自动关闭Executors类new出来的大部分线程池都是此类的对象:ThreadPoolExecutor,只不过构造函数传的参数不一样
    你可以看下ThreadPoolExecutor的javadoc,描述相当详细