gpt4 book ai didi

Java 线程池 - 哪种类型和多少?

转载 作者:行者123 更新时间:2023-11-29 04:25:42 24 4
gpt4 key购买 nike

我有一个在多次迭代中运行的程序。在每个循环中,我启动了多达 3000 个并发线程,其中一些线程在迭代期间开始并在迭代结束前结束,而其中一些线程处于启动状态并一直存活到迭代结束。

对于每次迭代,我都会重新创建线程。

  1. 我最好使用哪种类型的执行器:FixedThreadPool?线程池执行器?其他?
  2. 如果我需要设置线程值的数量 - 最大、最小、固定、任何其他...... - 我应该如何确定它们?
  3. 我是否应该为每个线程提交创建一个新的 Future 对象以跟踪其状态?

谢谢

最佳答案

3000 个并发线程对于目前的任何硬件来说都太高了。池的大小应反射(reflect)硬件的能力(CPU 核心数)。您将需要尝试不同的大小以获得最佳结果,但是对于 3000 个并发线程,您只会让它们饿死。

您需要的是利用一个队列,您可以在循环中向队列添加任务,工作线程从队列中拉出并执行任务。工作线程将来自一个有限大小的线程池。

所以您肯定想要一个在给定队列上运行的ThreadPoolExecutorjavadoc of the class有关于排队策略的有用信息。

关于Java 线程池 - 哪种类型和多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46441953/

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