首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java 8中将核心池大小设置为0的有效用例是什么?

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

Stack Overflow用户
提问于 2020-05-26 13:55:19
回答 1查看 263关注 0票数 2

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

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

因此,我的问题是,在java 8中将核心池大小设置为0的有效用例是什么,还是这样做不再有意义?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-26 15:18:00

当核心池为零时,Java5中ThreadPoolExecutor的奇怪行为是一个bug。它显然是在Java 6中悄悄地修复的。

事实上,这个问题显然是在Java7(根据https://bugs.openjdk.java.net/browse/JDK-7091003的说法)中重新出现的,这是一些返工的结果。然后,它被认为是一个错误,并加以修正。

请注意,实际上并发性将其描述为“看似奇怪的行为”,并且没有明确建议您应该在代码中利用它。

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

这样的用例之一是执行并发性在实践中的建议:

开发人员有时会尝试将核心大小设置为零,这样工作线程最终将被拆除,因此不会阻止JVM退出。

扩展来说,另一个用例是如果你想拆掉线程来回收资源.因为线程池不太可能在很长时间内被使用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62023797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档