繁体   English   中英

如何从Java中的100个线程一次运行10个线程?

[英]How do I run 10 threads at a time from 100 threads in Java?

我正在使用Java 6。

假设我创建了100个线程,每个线程完成一项任务。 我想连续一次运行10个线程。 这意味着如果我正在运行线程1-10,并且线程8完成,我希望能够立即启动线程11,而无需等待1-10加入。

我怎样才能做到这一点?

解决这个问题的一种方法可能是使用isAlive()方法,但我想知道如果没有轮询我是否可以这样做。

谢谢。

你为什么要这么做?

更好的方法是创建一个包含10个线程的池并向其提交100个任务。 它将具有完全相同的效果 - 100个任务中的10个同时运行。

ExecutorService pool = Executors.newFixedThreadPool(10);

for (int i = 0; i < 100; i++)
    pool.submit(...);

使用带有10个线程的ExecutorService线程池来提交任务。 你总结的任何工作都将以q Queue结束,10个线程将从中执行你的1000个工作。

当你说“一次”时,谈论并发是令人困惑的。 如果使用线程池大小为10的ExecuterService,则将启用100个线程中的10个执行。 但请记住,如果您只有1个CPU,并且其中一个线程具有更高的优先级,则所有其他线程可能保持等待状态。 我的建议是根据可用的CPU数来调整你的数字线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM