gpt4 book ai didi

java - Executors.newFixedThreadPool 中 LinkedBlockingQueue 的好处

转载 作者:行者123 更新时间:2023-12-02 03:56:37 25 4
gpt4 key购买 nike

我无法找出为什么 JDK 在 Executors.newFixedThreadPool 中使用 LinkedBlockingQueue 而不是 ArrayBlockingQueue 的好处。

return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());

ArrayBlockingQueue 的好处是速度快,但集合需要在开始时就被限制和定义,这在 newFixedThreadPool 中都适用。

因此,需要一些 ArrayBlockingQueue 无法实现的好处或额外功能。

最佳答案

fixedThreadPool 并不意味着内部队列是有界的,而是只能创建最大数量的线程。来自 Oracle 文档:任务通过内部队列提交到池中,只要 Activity 任务多于线程,该队列就会保存额外的任务。(请参阅 https://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html)

由此得出的结论是,如果队列是无界的,则 LinkedBlockingQueue 更相关,因为 ArrayBlockingQueue 是有界的并且其大小无法更改。

关于java - Executors.newFixedThreadPool 中 LinkedBlockingQueue 的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35391419/

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