gpt4 book ai didi

Java - 何时使用固定大小线程池和可变大小线程池?

转载 作者:行者123 更新时间:2023-11-30 08:00:01 27 4
gpt4 key购买 nike

在java ThreadPoolExecutor中,下面两种不同的场景会发生什么?

1) Fixed Size ThreadPool
CoreThreadPool size = 5
MaximumThreadPool size = 5
Queue size = unbounded
Maximum no.of threads that can run simultaneously=?

2) Variable size ThreadPool
CoreThreadPool size = 5
MaximumThreadPool size = 10
Queue size = unbounded
Maximum no.of threads that can run simultaneously=?

还有什么时候使用这两种情况?

最佳答案

唯一的区别是第二个设置最多允许运行 10 个线程;而第一个以 5 开头;并且永远不会创造更多。

当您了解在寻求更多线程时您不会获得更多性能/吞吐量/...时,您将使用第一个设置。另一方面,请记住,固定大小也意味着:周围总是有 5(或 10)个线程。从这个意义上说,这种线程池在“静态”环境中最有意义;您的“负载”不会随着时间的推移而发生很大变化。您不希望 5 个线程完成适合 10 个线程的工作,但您也不希望 10 个线程大部分时间处于空闲状态,因为 5 个线程就足够了。

换句话说:这在很大程度上取决于您的整个设置;关于传入流量以及许多其他因素,多少线程可以为您提供“最佳”结果。所以,当有疑问时,你应该仔分割析;并测试更改 one 变量(如最大线程数)会为您带来哪些变化。但当然:所有这些都要求您有很好的方法来衡量应用程序的性能/行为。

关于Java - 何时使用固定大小线程池和可变大小线程池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38844258/

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