一尘不染

Java 如何等待多个线程完成?

java

有什么方法可以简单地等待所有线程处理完成?例如,假设我有:

public class DoSomethingInAThread implements Runnable{

    public static void main(String[] args) {
        for (int n=0; n<1000; n++) {
            Thread t = new Thread(new DoSomethingInAThread());
            t.start();
        }
        // wait for all threads' run() methods to complete before continuing
    }

    public void run() {
        // do something here
    }


}

如何更改此main()方法,以便该方法在注释处暂停直到所有线程的run()方法退出?谢谢!


阅读 473

收藏
2020-03-11

共1个答案

一尘不染

你将所有线程放入数组中,全部启动,然后进行循环

for(i = 0; i < threads.length; i++)
  threads[i].join();

每个连接将阻塞,直到相应的线程完成为止。线程的完成顺序可能不同于你加入线程的顺序,但这不是问题:退出循环时,所有线程均已完成。

2020-03-11