java - Java 中的线程作业

标签 java multithreading

我想在 Java 中同时生成 200 个线程。我现在正在做的是进入一个循环并创建 200 个线程并启动它们。在这 200 个完成后,我想生成另外 200 个线程集等等。

这里的要点是我生成的前 200 个线程需要在生成下一组之前完成。我尝试了下面的代码,但它不起作用

for(int i=0;i<200;i++){
    Thread myThread = new Thread(runnableInstance);
    myThread.start();
}
for(int i=0;i<200;i++){
    Thread myThread = new Thread(runnableInstance);
    myThread.start();
}

注意:我有意放置了两次 for 循环,但我想要的效果并没有发生,因为第二个 for 循环是在第一组线程结束执行之前执行的。

请指教

最佳答案

您应该保留一份您创建的线程的列表。然后,一旦您启动了所有这些,您就可以遍历列表并对每个列表执行 join。当连接循环完成时,您的所有线程都将运行完成。

List<Thread> threads = new List<Thread>();
for(int i=0;i<200;i++){
    Thread myThread = new Thread(runnableInstance);
    myThread.start();
    threads.add(myThread);
}
//All threads are running
for(Thread t : threads) {
    t.join();
}
//All threads are done

关于java - Java 中的线程作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2868005/

相关文章:

java - 如何为使用 JSON JAXB 绑定(bind)的 Jersey REST API 生成文档?

c - pthread 退出时如何防止进程退出?

java - JPA 实体从 Hibernate 到 EclipseLink

java - Hibernate异常实体类未找到

java - DAO 和 Spring Beans 有什么区别?

c# - Thread.Sleep(2500) 与 Task.Delay(2500).Wait()

java - 从另一个线程访问对象

c# - 为什么未使用的物理线程数在 .NET 应用程序中波动?

Python子进程返回代码无需等待

java - Java 中类型转换的隐式工作