gpt4 book ai didi

java - 在Java 8中将核心池大小设置为0的有效用例是什么?

转载 作者:行者123 更新时间:2023-12-03 12:53:55 28 4
gpt4 key购买 nike

我在实践中遵循基于Java 5的Java并发性,当核心池大小设置为0时,在ThreadPoolExecutor中,任务直接进入队列。对于Java 8,情况并非如此,即使核心池大小设置为0,也会创建一个新线程。

ThreadPoolExecutor with corePoolSize 0 should not execute tasks until task queue is full

所以我的问题是在Java 8中将核心池大小设置为0有意义,或者这样做不再有意义吗?

最佳答案

当核心池为零时,Java 5中ThreadPoolExecutor的奇怪行为是一个错误。显然,它已在Java 6中悄然修复。

实际上,由于进行了一些重做,该问题显然在Java 7中再次出现(根据https://bugs.openjdk.java.net/browse/JDK-7091003)。然后将其确认为错误,并进行了修复。

请注意,“并发实践”将其描述为“奇怪的外观行为”,并未明确建议您应在代码中加以利用。

那么将corePoolSize设置为零的实际用例是什么?

这样的用例之一就是执行“并发实践”在以下方面的建议:

Developers are sometimes tempted to set the core size to zero so that worker threads will eventually be torn down, and therefore won't prevent the JVM from exiting.



通过扩展,另一个用例是如果您希望拆除线程以回收资源...因为线程池不太可能长时间使用。

关于java - 在Java 8中将核心池大小设置为0的有效用例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62023797/

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