gpt4 book ai didi

java - 使用 ScheduledThreadPoolExecutor 允许核心线程超时

转载 作者:行者123 更新时间:2023-11-29 04:22:11 25 4
gpt4 key购买 nike

你能解释一下吗,为什么在 ScheduledThreadPoolExecutor javadoc 中是这样的:

Additionally, it is almost never a good idea to set corePoolSize to zero or use allowCoreThreadTimeOut because this may leave the pool without threads to handle tasks once they become eligible to run.

我已经尝试分析当必须执行新任务时如何在该线程池中创建新线程,我认为 javadoc 中描述的问题不应该发生。

最佳答案

线程池尽量使工作线程数等于corePoolSize,通过缓存线程来提高效率。允许核心线程超时是违背这个目的的。如果允许核心线程超时,会执行新任务,但会导致重复创建和销毁工作线程。

如果设置allowCoreThreadTimeOut = true,则工作线程发现任务队列中没有任务超时后,即使工作线程数小于corePoolSize<也会被销毁。所以,如果此时提交新的任务,线程池就得创建新的线程。

如果设置allowCoreThreadTimeOut = false,则工作线程发现任务队列中没有任务且工作线程数小于corePoolSize后,不会被销毁并继续等待新任务。

关于java - 使用 ScheduledThreadPoolExecutor 允许核心线程超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48424367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com