Der Unterschied zwischen Startmethode und Auslaufmethode im Thread
Warum rufen wir in einem Thread die Startmethode auf, wenn die Startmethode die Ausführungsmethode aufruft, die Startmethode aufzurufen? Oder was ist der Unterschied zwischen dem Aufrufen der Startmethode und der Run -Methode in einem Java -Thread? Diese beiden Fragen sind zwei sehr beliebte Multi-Thread-Interviewfragen auf Anfängerebene. Wenn ein Java -Programmierer beginnt, Threads zu lernen, lernen er zunächst, die Thread -Klasse zu erben, die Auslaufmethode zu überladen oder die Runnable -Schnittstelle zu implementieren, die Ausführungsmethode zu implementieren und dann die Startmethode der Threadinstanz aufzurufen. Nachdem er einige Erfahrungen hat, wird er feststellen, dass die Startmethode die Run -Methode intern aufruft, indem er sich die API -Dokumentation oder andere Möglichkeiten ansieht, aber viele von uns wissen, dass wir, wenn wir während des Interviews gefragt werden, die Bedeutung dieser Frage erkennen werden. In diesem Java -Tutorial verstehen wir den Unterschied zwischen dem Aufrufen der Startmethode und der Auslaufmethode, wenn Sie Threads in Java starten
Dieser Beitrag ist ein Postkript für einige unserer Artikel, die über Java Multithreading veröffentlicht wurden, z. B. Unterschied zwischen Runnable und Thread in Java und der Lösung von Produzenten -Verbraucherproblemen in Java mithilfe von Blockingqueue. Wenn Sie sie noch nicht gelesen haben, finden Sie sie möglicherweise interessant und nützlich.
Der Unterschied zwischen Start und Lauf im Java -Thread
Der Hauptunterschied zwischen Start- und Laufmethoden besteht darin, dass beim Aufrufen des Programms die Startmethode ein neuer Thread erstellt wird und der Code in der Auslaufmethode auf dem neuen Thread ausgeführt wird. Wenn Sie jedoch die Auslaufmethode direkt aufrufen, erstellt das Programm keinen neuen Thread, und der Code innerhalb der Run -Methode wird im aktuellen Thread ausgeführt. In den meisten Fällen ist das Aufrufen der Run -Methode ein Fehler oder ein Fehler. Da die ursprüngliche Absicht des Anrufers darin besteht, die Startmethode zum Starten eines neuen Threads aufzurufen, kann dieser Fehler von vielen statischen Codeabdeckungstools wie Fingbugs erkannt werden. Wenn Sie eine Aufgabe ausführen möchten, die viel Zeit in Anspruch nimmt, ist es am besten, die Startmethode zu verwenden. Andernfalls bleibt Ihr Haupt -Thread festgefahren, wenn Sie die Run -Methode aufrufen. Ein weiterer Unterschied besteht darin, dass Sie nach Beginn eines Threads die Startmethode des Thread -Objekts nicht wiederholt aufrufen können. Wenn Sie die Startmethode des bereits gestarteten Threads aufrufen
Das Folgende ist die Demo der Startmethode und die Run -Methode
Die Aufgabe im Thread besteht darin, den Namen des aktuellen Threads im Zeichenfolgenwert zu drucken.
Hier können wir den Unterschied zwischen den beiden deutlich erkennen
public class diffBewTeenStartandrun {public static void main (String args []) {System.out.println (Thread.CurrentThread (). getName ()); // Erstellen von zwei Threads für Start and Run -Methode -Method -Thread -Threadsthread = neuer Thread (neue Aufgabe ("Start")); Thread RunThread = neuer Thread (neue Task ("run")); startThread.start (); // Aufruf -Startmethode des Threads - führt in // neuer Thread runThread.run () aus; // Aufrufmethode des Threads aufrufen - führt in // aktueller Thread}/ * * einfache Runnable -Implementierung aus */ private statische Klassen -Task -Implements Runnable {private String Caller; öffentliche Aufgabe (String Caller) {this.caller = Caller; } @Override public void run () {System.out.println ("Anrufer:" + Anrufer + "und der Code in diesem Thread wird von:" + thread.currentThread () ausgeführt. GetName ()); }}}Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!