首页  >  文章  >  Java  >  如何等待多个线程执行完成后再继续?

如何等待多个线程执行完成后再继续?

Linda Hamilton
Linda Hamilton原创
2024-10-27 10:17:03276浏览

How to Wait for Multiple Threads to Finish Execution Before Proceeding?

如何同步多线程执行

在多线程应用程序中,通常需要协调并行任务的执行。本文探讨了一种等待一组线程完成后再继续的方法。

问题:

考虑以下代码:

<code class="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
}</code>

在这个例子中,创建并启动了多个新线程。然而,main() 方法立即继续执行,而不等待这些线程完成其任务。

解决方案:

为了同步执行,我们可以创建线程引用数组,然后对每个线程对象使用 join() 方法。这会阻塞当前线程,直到目标线程完成执行:

<code class="java">import java.lang.Thread;

public class DoSomethingInAThread implements Runnable {...}

public static void main(String[] args) {
    Thread[] threads = new Thread[1000];
    for (int n=0; n<threads.length; n++) {
        threads[n] = new Thread(new DoSomethingInAThread());
        threads[n].start();
    }
    for (Thread t: threads) {
        t.join();
    }
}</code>

在此修订后的代码中,main() 方法创建一个线程引用数组并启动每个线程。然后它进入一个循环,在数组中的每个线程上调用 join()。这可确保所有线程在 main() 方法继续之前完成其任务。

以上是如何等待多个线程执行完成后再继续?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn