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

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

Barbara Streisand
Barbara StreisandOriginal
2024-11-16 19:00:03489Durchsuche

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

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!

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