使用用户sjlee
在这里给出的答案Impossible to make a cached thread pool with a size limit?
用代码
new ThreadPoolExecutor(100, // core size
10000, // max size
1000, // idle timeout
TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(Integer.MAX_SIZE)); // queue with a size
如果任务数量超过 coreSize
100 * queueSize
20 个,线程数量将会增加,直到达到最大大小。
好的。
但问题是,假设一切都完成了,没有更多的任务,线程数量不会减少。
如何让Executor在线程全部空闲时将其数量减少到0?
接下来,如何让 Executor 将 extras 排队以便稍后运行?
最佳答案
您可以使用allowCoreThreadTimeOut(true)
来使核心线程在超时时终止。
关于java - 并发-如何使其排队而不被拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45778936/