gpt4 book ai didi

java - 并行运行 100 个线程,如果之前的一些线程已完成,则运行缺失的线程

转载 作者:搜寻专家 更新时间:2023-11-01 01:05:32 24 4
gpt4 key购买 nike

例如,我需要始终运行 100 个线程来执行某些操作。我有一个名为 ThreadsWorker 的类,它查找线程数并在之前的一些线程完成时运行丢失的线程。所以,这是描述情况的表格:

1 second: 100 threads
2 second: 92 threads (ThreadsWorker generates new 8 threads)
3 second: 100 theads
4 second: 72 threads (ThreadsWorker generates 28 threads)

等等。我的线程是匿名调用(只是 new Thread(new Runnable(...)).start()),因为我不知道如何将它们正确保存到 Threads[] array 因为,虽然 ThreadsWorker 会保存 threads[i] = new Threads(),但一些线程可能会完成,然后会与数组索引发生一些冲突。

由于匿名调用,我现在使用 threadsCount 变量,并在线程主体开始时递增它,在线程主体结束时递减(使用 synchronized)。好的,它工作正常,我的唯一方法是使用 while() 循环,它在进度完成时检查 threadsCount == 0 是否。

我认为这是 C 风格而不是 Java 方式:)那么,你能帮我用 Java 方式做吗?

最佳答案

如果您的目标只是让 100 个线程主动处理,我建议查看 Java thread pools (和 Executors 更普遍)。

我不清楚您是要让所有 100 个线程继续运行还是等待它们全部完成。您的问题同时引用了(ThreadsWorker spawning 28 new threads,threadsCount==0),它们似乎相互矛盾。

关于java - 并行运行 100 个线程,如果之前的一些线程已完成,则运行缺失的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5508563/

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