如何同步多執行緒執行
在多執行緒應用程式中,通常需要協調並行任務的執行。本文探討了一種等待一組執行緒完成後再繼續的方法。
問題:
考慮以下程式碼:
<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中文網其他相關文章!