Warten auf den Abschluss mehrerer Threads
In dem von Ihnen beschriebenen Szenario werden mehrere Threads erstellt und jeder führt dieselbe Aufgabe unabhängig aus , muss eine Möglichkeit gefunden werden, den Hauptthread anzuhalten, bis die Ausführung aller erzeugten Threads abgeschlossen ist. Dies ist wichtig, um eine ordnungsgemäße Koordination sicherzustellen und zu verhindern, dass der Haupt-Thread fortfährt, bevor die sekundären Threads abgeschlossen sind.
Eine effektive Lösung besteht darin, ein Array von Thread-Objekten zu erstellen, um alle erzeugten Threads zu speichern, sie gleichzeitig zu starten und dann Implementieren einer Schleife, die die Methode „join()“ für jeden Thread im Array aufruft. Die Methode „join()“ blockiert den aufrufenden Thread, bis der Thread, bei dem sie aufgerufen wird, beendet wird.
Durch die Einbindung dieser Schleife in Ihre DoSomethingInAThread-Klasse können Sie zuverlässig warten, bis alle sekundären Threads abgeschlossen sind, bevor Sie mit der Ausführung des Hauptthreads fortfahren:
<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>
Durch die oben gezeigte Änderung der main()-Methode fährt der Hauptthread erst fort, wenn alle sekundären Threads die Ausführung abgeschlossen haben. Diese Technik stellt sicher, dass die Ausführung des Hauptthreads mit der Fertigstellung aller seiner untergeordneten Threads synchronisiert wird.
Das obige ist der detaillierte Inhalt vonWie kann die Ausführung des Hauptthreads sichergestellt werden, nachdem mehrere Threads abgeschlossen sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!