Heim >Java >javaLernprogramm >Warum ist „Thread.start()' für echtes Multithreading in Java unerlässlich?
Den Unterschied zwischen Thread.start() und Thread.run() verstehen
Bei der Arbeit mit Multithreading in Java stoßen Programmierer auf zwei Schlüssel Methoden: Thread.start() und Thread.run(). Obwohl ihre Namen auf eine ähnliche Funktionalität hinweisen, dienen sie deutlich unterschiedlichen Zwecken.
Was bewirken diese Methoden?
Thread.start():
Thread.run():
Warum können wir nicht einfach Thread.run aufrufen? ()?
Wenn Thread.run() auch die run()-Methode ausführt, warum können wir diese dann nicht einfach anstelle von Thread.start() aufrufen? Der Grund liegt in der Isolation und unabhängigen Ausführung, die Multithreading bietet.
Der Aufruf von Thread.run() führt den Code im aktuellen Thread aus, nicht in einem separaten Thread. Dies bedeutet, dass jeglicher Code in der run()-Methode weiterhin mit Ressourcen im aktuellen Thread interagiert und diese beeinflusst. Dies ist nicht der beabsichtigte Zweck von Multithreading, das die gleichzeitige Ausführung von Aufgaben ermöglicht.
Beispiel zur Veranschaulichung des Unterschieds:
Bedenken Sie Folgendes Code:
public class ThreadExample { public static void main(String[] args) { Thread t1 = new Thread(() -> System.out.println("Thread 1")); Thread t2 = new Thread(() -> System.out.println("Thread 2")); // Here, we call Thread.start() and Thread.run(): t1.start(); // Starts Thread 1 in a separate thread t2.run(); // Executes Thread 2 in the current thread System.out.println("Main Thread"); } }
Ausgabe:
Thread 1 Main Thread
Der Aufruf von Thread.start() auf t1 erstellt einen neuen Thread und führt die run()-Methode in diesem Thread aus , sodass „Thread 1“ gedruckt werden kann. Andererseits führt der Aufruf von Thread.run() auf t2 die run()-Methode im aktuellen (d. h. Haupt-)Thread aus und umgeht die Erstellung eines neuen Threads. Dies führt dazu, dass „Thread 2“ nicht gedruckt wird, da er nie in einem separaten Thread ausgeführt wird.
Das obige ist der detaillierte Inhalt vonWarum ist „Thread.start()' für echtes Multithreading in Java unerlässlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!