gpt4 book ai didi

java - 控制并行线程数

转载 作者:行者123 更新时间:2023-12-01 22:54:18 24 4
gpt4 key购买 nike

我有很多计算要做。如果没有 RAM 限制,所有这些都可以并行运行。 :/

因此我想控制并行工作的线程数量。

我编写了以下代码:

List<Thread> threadList = new ArrayList<Thread>();              
threadList.add(new Thread(new Runnable() {
@Override
public void run() {
....
}
}));
threadList.get(threadList.size()-1).start();
if(threadList.size() >= 5){
threadList.remove(0).join();
}

对于 1,这可以正常工作,就好像没有多线程一样。但如果我允许 2 个,它就会变得非常疯狂,并且 RAM 会被填满。

我做错了什么吗?

最佳答案

请不要尝试创建您自己的线程列表。使用现有方法和常见方法来执行此操作。

一种正确的方法是使用 ThreadPoolExecutor。检查一下这个。 MultiThreading Vs ThreadPoolExecutor

您还应该使用一个执行器,它可以让您限制并行/最大使用的线程数。示例:

ExecutorService executor = Executors.newFixedThreadPool(10); 
executor.submit(yourfirstthread);
executor.submit(secondthread);
// and so on..

关于java - 控制并行线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24317872/

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