gpt4 book ai didi

java.util.concurrent.ThreadPoolExecutor 奇怪的逻辑

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

看看 ThreadPoolExcecutor 的这个方法:

public void execute(Runnable command) {
...
if (runState == RUNNING && workQueue.offer(command)) {
if (runState != RUNNING || poolSize == 0)
ensureQueuedTaskHandled(command);
}
...
}

它检查 runState 是否为 RUNNING 然后相反。当我尝试对类似 SEDA 的模型进行一些调整时,我想了解线程池的内部结构。
你认为这段代码正确吗?

最佳答案

执行器的运行状态可能会在初始检查和后续检查之间发生变化在命令添加到队列后。原因之一是调用了执行程序的 shutdown() 方法。

执行第二次检查,以便如果执行程序已关闭,则任何排队的任务都会得到适当处理,而不是被困在队列中。

关于java.util.concurrent.ThreadPoolExecutor 奇怪的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2500966/

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