Den Unterschied zwischen Thread.start() und Thread.run() verstehen
Bei der Arbeit mit Threads in Java ist es wichtig zu verstehen die Rollen der Methoden start() und run(). Sie spielen unterschiedliche Funktionen bei der Verwaltung des Lebenszyklus eines Threads.
Thread.start() vs. Thread.run()
Die Methode Thread.start() wird initialisiert ein neuer Thread mit dem in der run()-Methode definierten Code. Beim Aufruf wird ein separater Ausführungsthread erstellt und die run()-Methode gleichzeitig mit dem Thread ausgeführt, der start() aufgerufen hat.
Im Gegensatz dazu führt Thread.run() den Code in run() direkt aus. Methode innerhalb des aktuellen Threads. Es wird kein neuer Thread erstellt, was bedeutet, dass der Code nacheinander mit dem aufrufenden Thread ausgeführt wird.
Beispiel zur Veranschaulichung des Unterschieds
Um den Unterschied zwischen den beiden Methoden zu veranschaulichen , bedenken Sie Folgendes Beispiel:
class MyThread extends Thread { @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println("Thread " + this.getName() + ": " + i); } } } public class Main { public static void main(String[] args) { MyThread thread1 = new MyThread(); // Calling Thread.start() thread1.start(); // Calling Thread.run() directly thread1.run(); } }
Ausgabe:
Thread Thread-0: 0 Thread Thread-0: 1 Thread Thread-1: 0 Thread Thread-1: 1 Thread Thread-1: 2 Thread Thread-1: 3 Thread Thread-1: 4 Thread Thread-1: 5 Thread Thread-1: 6 Thread Thread-1: 7 Thread Thread-1: 8 Thread Thread-1: 9
In diesem Beispiel erstellt der Aufruf von start() einen neuen Thread (Thread-0), der den Lauf ausführt( )-Methode gleichzeitig mit dem Hauptthread. Folglich verschachtelt die Ausgabe die Nachrichten aus beiden Threads.
Der direkte Aufruf von run() erstellt jedoch keinen neuen Thread. Stattdessen führt es die run()-Methode innerhalb des Hauptthreads (Thread-1) aus. Dadurch werden die Nachrichten der run()-Methode nach dem start()-Aufruf nacheinander gedruckt.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Thread.start() und Thread.run() in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!