等待多個線程完成
在您描述的場景中,創建了多個線程,每個線程獨立運行相同的任務,有必要找到一種方法來暫停主線程,直到所有派生的線程完成執行。這對於確保適當的協調並防止主線程在輔助線程完成之前繼續進行至關重要。
一個有效的解決方案包括創建一個 Thread 物件數組來存儲所有生成的線程,同時啟動它們,然後實現一個循環,在數組中的每個線程上調用 join() 方法。 join() 方法會阻塞呼叫線程,直到呼叫它的線程退出。
透過將此迴圈合併到DoSomethingInAThread 類別中,您可以可靠地等待所有輔助執行緒完成,然後再繼續執行主執行緒:
<code class="java">// Array to store created threads private static Thread[] threads; public static void main(String[] args) { // Create an array to store the threads threads = new Thread[1000]; // Start all the threads for (int n = 0; n < 1000; n++) { Thread t = new Thread(new DoSomethingInAThread()); t.start(); // Save the reference to the created thread threads[n] = t; } // Wait for all threads to complete for (int i = 0; i < threads.length; i++) { threads[i].join(); }</code>
透過如上所示修改main()方法,只有在所有輔助執行緒完成執行後,主執行緒才會繼續執行。這種技術確保主執行緒的執行與其所有子執行緒的完成同步。
以上是多執行緒完成後如何保證主執行緒執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!