我们通过executors.newFixThreadPool 创建指定大小的线程池,在所有线程都结束后,线程池并未释放线程。我们之后再新建的线程池的线程将一直累加。解决这个问题,只需要设置如下:
ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*2);
executor.setKeepAliveTime(10, TimeUnit.SECONDS);
executor.allowCoreThreadTimeOut(true);
这样设置后,队列的任务全部结束后将,释放所有的线程。
本文介绍如何使用Java的Executors创建固定大小的线程池,并通过设置keepAliveTime和allowCoreThreadTimeOut参数来确保线程池在任务完成后能够正确释放线程资源。
5611

被折叠的 条评论
为什么被折叠?



