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

Was ist der Hauptunterschied zwischen „Thread.start()' und „Thread.run()' in Java?

DDD
DDDOriginal
2024-11-15 11:41:021004Durchsuche

What's the Key Difference Between `Thread.start()` and `Thread.run()` in Java?

Die Nuancen von Thread.start() und Thread.run() verstehen

Der Unterschied zwischen Thread.start() und Thread. run() in Java spielt eine entscheidende Rolle beim Multithreading. Während beide Methoden die Ausführung der run()-Methode beinhalten, tun sie dies auf grundlegend unterschiedliche Weise.

Thread.run(): Direkte Ausführung

Run() direkt aufrufen führt die run()-Methode im aktuellen Thread aus. Das bedeutet, dass für die Aufgabe kein separater Thread erstellt wird. Stattdessen wird die Aufgabe als Teil der Ausführung des aufrufenden Threads ausgeführt.

Beispiel:

public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("Running directly...");
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.run();
    }
}

Ausgabe:

Running directly...

In diesem Wenn Sie beispielsweise run() aufrufen, wird „Direkt ausgeführt...“ vom Hauptthread ausgegeben, da kein separater Thread vorhanden ist erstellt.

Thread.start(): Neue Thread-Erstellung

Im Gegensatz dazu erstellt der Aufruf von start() einen neuen Thread und führt die run()-Methode innerhalb dieses neuen Threads aus Faden. Dadurch können mehrere Aufgaben gleichzeitig ausgeführt werden.

Beispiel:

public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("Running in new thread...");
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start();
    }
}

Ausgabe:

Running in new thread...

Beachten Sie, dass der Aufruf von start() dies nicht tut Führen Sie sofort die Methode run() aus. Stattdessen wird ein neuer Thread erstellt und die Java Virtual Machine entscheidet, wann er geplant und ausgeführt wird.

Praktischer Unterschied

Der Unterschied zwischen Thread.start() und Thread.run() wird deutlich, wenn man Aufgaben betrachtet, deren Ausführung viel Zeit in Anspruch nimmt. Wenn eine Aufgabe direkt mit run() ausgeführt wird, wird der Hauptthread blockiert, bis die Aufgabe abgeschlossen ist, sodass in der Zwischenzeit keine anderen Aufgaben ausgeführt werden können. Dies kann zu schlechter Leistung und Reaktionsfähigkeit führen.

Durch die Verwendung von start() wird die Aufgabe in einem separaten Thread ausgeführt, sodass der Hauptthread weiterhin andere Aufgaben gleichzeitig ausführen kann. Dadurch wird die Gesamtleistung verbessert und die Reaktionsfähigkeit erhalten.

Das obige ist der detaillierte Inhalt vonWas ist der Hauptunterschied 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