Heim >Java >javaLernprogramm >Was ist der Unterschied zwischen dem Aufruf von Thread.start() und Thread.run() in Java?

Was ist der Unterschied zwischen dem Aufruf von Thread.start() und Thread.run() in Java?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-13 11:17:02641Durchsuche

What is the difference between calling Thread.start() and Thread.run() in Java?

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():

  • Parallelität: Durch das Starten eines Threads können mehrere Threads gleichzeitig ausgeführt werden und dabei die verfügbaren Ressourcen nutzen Verarbeitung von Ressourcen und Verbesserung der Anwendungsleistung.
  • Thread-Verwaltung: Das Betriebssystem verwaltet Threads, einschließlich Planung und Kontextwechsel, und befreit die Anwendung von diesen Verantwortlichkeiten.
  • Code-Einfachheit: Das Starten eines Threads ist eine prägnantere und einfachere Möglichkeit, Parallelität zu erreichen, als Threads manuell durch direkten Aufruf von run() zu verwalten.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn