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

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

Barbara Streisand
Freigeben: 2024-12-21 22:55:31
Original
193 Leute haben es durchsucht

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

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

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

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage