Nach dem Lesen über Join-Methode habe ich einige Zweifel: Ich denke, Multithreading ist ein Weg, um Parallelität in unserem Programm einzuführen und glauben, einige Zeit brauchen wir einige Thread fertig vor einem anderen. Aber ich verstehe nicht, warum ein Programmierer etwas schreiben wie folgt aus:Warum wir einen neuen Thread erstellen und join() verwenden, um den übergeordneten Thread warten zu lassen?
public static void main(String[] args) {
Thread t1 = new Thread(new MyRunnable(), "t1");
Thread t2 = new Thread(new MyRunnable(), "t2");
t1.start();
t1.join();
t2.start();
t2.join();
}
was ist der Vorteil vs Code unten in diesem Beispiel mit Gewinde:
public static void main(String[] args) {
Thread t1 = new Thread(new MyRunnable(), "t1");
Thread t2 = new Thread(new MyRunnable(), "t2");
t1.run();//just run the task of thread without start new thread
t2.run();
}
in ersten Beispiel Haupt-Thread bis t1 pausieren sollte fertig und starte dann t2 und warte bis zum Ende und im zweiten Beispiel passiert es auch.
Warum wir einen neuen Thread erstellen und join() verwenden, um den übergeordneten Thread warten zu lassen? Warum kann nicht der übergeordnete Thread anstelle des neuen Threads verwendet werden?
Berufung *** tx. run() *** startet keinen Thread, das ist der Unterschied! –
Im zweiten Fall ist Ihre Hauptmethode möglicherweise vor Ihrem Thread t1 und t2 beendet. Das ist der Unterschied. Im ersten Fall wird die Main-Methode niemals vor den Threads t1 und t2 beendet. –
Ich weiß es, meine Frage ist, warum Thread erstellen, wenn wir den aktuellen Thread stoppen müssen, bis es fertig ist? Warum hat man einfach nicht den aktuellen Thread anstelle des neuen Threads benutzt? – MTB