Heim > Java > javaLernprogramm > Hauptteil

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

DDD
Freigeben: 2024-11-15 11:41:02
Original
901 Leute haben es durchsucht

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();
    }
}
Nach dem Login kopieren

Ausgabe:

Running directly...
Nach dem Login kopieren

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

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. 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();
    }
}
Nach dem Login kopieren

Ausgabe:

Running in new thread...
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage