gpt4 book ai didi

Java CachedThreadPool 与 FixedThreadPool

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:22:22 25 4
gpt4 key购买 nike

我对我的应用程序进行了负载测试,以找出支持计划负载所需的最大线程数。

我使用了 ExecutorService CachedThreadPool 以便根据负载动态创建线程。现在我使用 getLargestPoolSize() 知道了最大线程数的值。

我是否应该将 CachedThreadPool 替换为 FixedThreadPool(maxValue),以避免 的大型 (Integer.MAX_VALUE) 线程创建行为缓存线程池

对它们各自的优点和缺点提出建议。

最佳答案

缓存线程池和 Java 中的固定线程池之间最重要的区别是缓存线程池对它生成和使用的线程数没有上限。首选哪一个取决于您希望缩放行为是什么样的。

缓存线程池的主要优点是即使您有大量未预料到的任务要执行,线程也会立即开始执行。例如,您的业务需求可能会在数月或数年内增加,您的应用程序可能会转移到更强大的机器上,使用缓存线程池将允许通过使用增加的可用处理能力来满足增加的需求,而无需更改代码.这可能是一个优势,因为一旦应用程序投入使用数月或数年,人们可能不太容易记住代码以将线程限制识别为可以更改以提高性能的参数。

固定线程池的主要优点是线程数控制得更严。如果此应用程序在短时间内接收大量任务,这有​​助于防止软件安装的其他部分(在应用程序内或其他应用程序中)处理能力不足。此外,遇到操作系统线程限制的风险也降低了,从而降低了当进程需要生成线程但无法生成线程时可能导致软件崩溃的风险。

关于Java CachedThreadPool 与 FixedThreadPool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32791706/

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