Ich bin Themen jetzt in der Schule lernen, und wir hatten ein Programm zu schreiben, das mehrere Threads verwendet, aber es funktioniert nicht richtig, bis ich thread.join()
verwendetThread.join() Erklärung
Es funktioniert, wie es sollte jetzt, aber ich bin mir nicht ganz sicher, was passiert.
Ursprünglich hatte ich so etwas. Es verursachte die Ausgabe der Threads miteinander zu Konflikt.
Ich tat dies dann, und die Ausgabe war gut und die richtige Antwort wurde erreicht.
t1.start();
t1.join();
t2.start();
t2.join();
t3.start();
t3.join();
Meine Frage ist, was passiert im ersten Beispiel im Vergleich zum zweiten? Ich habe gegoogelt und auf stackoverflow gesucht, kann aber keine Antwort finden, die mir völlig hilft.
Wenn Ihr Programm sehen war nicht auf '.join vor den Anrufen arbeiten()' dann werden Sie wahrscheinlich wurden in ein Synchronisationsproblem (ohne den gesamten Code ist es schwer zu sagen). Wenn Sie die gleichen Objekte in den 3 Threads teilen und modifizieren, möchten Sie vielleicht eine Art von Synchronisation in Betracht ziehen. – Jayfray
Genau auf das, was ich jetzt untersuche, bin ich über einen Post gestolpert.Ich teile ein 2D-Array über Threads. – sbowde4
Sie werden wahrscheinlich das synchronisierte Schlüsselwort oder das [ReentrantLock] (http://docs.oracle.com/javase/lps/api/java/util/concurrent/locks/ReentrantLock.html) sehen wollen. – Jayfray