Aufruf von Thread.start() vs. Thread.run() in Java
Einführung:
In Java bietet Multithreading einen Mechanismus zur gleichzeitigen Ausführung von Aufgaben. Eine der Schlüsselkomponenten des Multithreadings ist die Thread-Klasse. Um einen Thread auszuführen, kann man entweder Thread.start() oder Thread.run() aufrufen. Dieser Artikel soll die Unterschiede zwischen diesen beiden Methoden verdeutlichen und zeigen, wann sie einen Unterschied machen.
Den Unterschied verstehen:
Der Aufruf von Thread.start() für ein Thread-Objekt initiiert a neuer Ausführungsthread. Dadurch wird der Thread-Scheduler des Betriebssystems angewiesen, einen neuen Thread zu erstellen und seine Ausführung zu planen. Sobald der Thread gestartet ist, wird er unabhängig und wird gleichzeitig mit dem Haupt-Thread ausgeführt.
Andererseits führt der Aufruf von Thread.run() für ein Thread-Objekt einfach die run()-Methode des Threads im aktuellen Thread aus . In diesem Fall ist die unabhängige Ausführung des Threads nicht geplant und die run()-Methode wird sequentiell ausgeführt, nachdem die run()-Methode aufgerufen wurde.
Warum einen Thread starten, anstatt Run aufzurufen?
Das Starten eines Threads hat mehrere Vorteile gegenüber dem direkten Aufruf von run():
Beispiel zur Veranschaulichung des Unterschieds:
Um den Unterschied zu veranschaulichen, betrachten Sie das folgende Beispiel:
public class ThreadExample extends Thread { @Override public void run() { System.out.println("Thread is running..."); } public static void main(String[] args) { ThreadExample thread = new ThreadExample(); // Call the run() method directly - executed in the main thread thread.run(); // Start the thread - runs concurrently with the main thread thread.start(); } }
Wenn dieser Code mit dem Aufruf der run()-Methode ausgeführt wird, lautet die Ausgabe:
Thread is running...
In diesem Fall wird die run()-Methode im Hauptthread ausgeführt und es gibt keine Parallelität. Wenn der Code jedoch mit dem Methodenaufruf start() ausgeführt wird, lautet die Ausgabe:
Thread is running...
... gefolgt von der Ausgabe des Hauptthreads, was darauf hinweist, dass der Thread gleichzeitig ausgeführt wird.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen dem Aufruf von Thread.start() und Thread.run() in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!