Heim >Java >javaLernprogramm >Runnable run() vs. Thread start(): Was ist der Hauptunterschied?

Runnable run() vs. Thread start(): Was ist der Hauptunterschied?

Barbara Streisand
Barbara StreisandOriginal
2024-12-21 22:55:31194Durchsuche

Runnable run() vs. Thread start(): What's the Key Difference?

Ausführbarer run() vs. Thread start()

Frage:

Gleichzeitig Bei der Java-Programmierung definiert die Runnable-Schnittstelle eine run()-Methode, die den Einstiegspunkt für eine Aufgabe darstellt. Ebenso verfügt die Thread-Klasse über eine start()-Methode, die einen neuen Ausführungsthread initiiert. Was ist der Hauptunterschied zwischen diesen beiden Methoden?

Antwort:

Der grundlegende Unterschied liegt in der Thread-Erstellung und -Ausführung:

Ausführbarer Lauf (): Keine Thread-Erstellung

  • Der direkte Aufruf von Runnable.run() funktioniert nicht Erstellen Sie einen neuen Thread.
  • Stattdessen wird die run()-Methode innerhalb des aktuellen Ausführungsthreads ausgeführt.
  • Dieser Ansatz eignet sich, wenn die Aufgabe leichtgewichtig ist und keinen eigenen dedizierten Thread erfordert .

Thread start(): Thread-Erstellung

  • Aufruf Thread.start() initiiert einen neuen Ausführungsthread.
  • Innerhalb des neuen Threads wird die run()-Methode des zugehörigen Runnable-Objekts ausgeführt.
  • Die Verwendung von Thread.start() ermöglicht dies Parallelität durch Aufteilung der Aufgabe in separate Threads, die ausgeführt werden gleichzeitig.

Beispiel:

Betrachten Sie zwei Klassen, R1 und R2, die die Runnable-Schnittstelle implementieren:

class R1 implements Runnable {
    public void run() { ... }
}

class R2 implements Runnable {
    public void run() { ... }
}

Im Folgenden Code-Snippet, r1.run() und r2.run() werden direkt aufgerufen, was bedeutet, dass keine neuen Threads aufgerufen werden erstellt:

public static void main() {
    R1 r1 = new R1();
    R2 r2 = new R2();

    r1.run();
    r2.run();
}

Im Gegensatz dazu erstellt der folgende Code zwei neue Threads, t1 und t2, und startet sie:

public static void main() {
    R1 r1 = new R1();
    R2 r2 = new R2();
    Thread t1 = new Thread(r1);
    Thread t2 = new Thread(r2);

    t1.start();
    t2.start();
}

In diesem Code sind die Aufgaben mit r1 und r2 verknüpft wird gleichzeitig in den neu erstellten Threads ausgeführt.

Das obige ist der detaillierte Inhalt vonRunnable run() vs. Thread start(): Was ist der Hauptunterschied?. 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