Waiting for Completion of Multiple Threads
In the scenario you've described, where multiple threads are created and each runs the same task independently, it becomes necessary to find a way to pause the main thread until all the spawned threads have finished executing. This is essential to ensure proper coordination and prevent the main thread from proceeding before the secondary threads are complete.
One effective solution involves creating an array of Thread objects to store all the spawned threads, starting them concurrently, and then implementing a loop that calls the join() method on each thread in the array. The join() method blocks the calling thread until the thread it's called on exits.
By incorporating this loop into your DoSomethingInAThread class, you can reliably wait for all secondary threads to complete before continuing execution of the main thread:
<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>
By modifying the main() method as shown above, the main thread will only proceed once all the secondary threads have completed executing. This technique ensures that the main thread's execution is synchronized with the completion of all its child threads.
The above is the detailed content of How to Ensure Main Thread Execution After Multiple Threads Complete?. For more information, please follow other related articles on the PHP Chinese website!