Heim >Java >javaLernprogramm >Wie kann man warten, bis die Ausführung mehrerer Threads abgeschlossen ist, bevor man fortfährt?
So synchronisieren Sie die Multithread-Ausführung
In Multithread-Anwendungen ist es oft notwendig, die Ausführung paralleler Aufgaben zu koordinieren. In diesem Artikel wird eine Methode untersucht, mit der Sie warten können, bis eine Gruppe von Threads abgeschlossen ist, bevor Sie fortfahren.
Das Problem:
Bedenken Sie den folgenden Code:
<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>
In diesem Beispiel werden mehrere neue Threads erstellt und gestartet. Die main()-Methode setzt jedoch die Ausführung sofort fort, ohne darauf zu warten, dass diese Threads ihre Aufgaben abgeschlossen haben.
Die Lösung:
Um die Ausführung zu synchronisieren, können wir erstellen ein Array von Thread-Referenzen und verwenden Sie dann die Methode join() für jedes Thread-Objekt. Dadurch wird der aktuelle Thread blockiert, bis der Ziel-Thread seine Ausführung abgeschlossen hat:
<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>
In diesem überarbeiteten Code erstellt die Methode main() ein Array von Thread-Referenzen und startet jeden Thread. Anschließend tritt es in eine Schleife ein, die join() für jeden Thread im Array aufruft. Dadurch wird sichergestellt, dass alle Threads ihre Aufgaben abschließen, bevor die main()-Methode fortfährt.
Das obige ist der detaillierte Inhalt vonWie kann man warten, bis die Ausführung mehrerer Threads abgeschlossen ist, bevor man fortfährt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!