首頁  >  文章  >  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