In Java gibt es drei Hauptmethoden zum Erstellen von Threads: durch Erben der Thread-Klasse, Implementieren der Runnable-Schnittstelle und Verwenden von Lambda-Ausdrücken, die nach Java 8 eingeführt wurden. Im Folgenden beschreibt der Autor die Merkmale und Verwendungsmethoden dieser drei Methoden ausführlich:
1. Erben Sie die Thread-Klasse
Auf diese Weise wird ein Thread definiert, indem eine Unterklasse erstellt wird, die von der Thread-Klasse erbt. Die Unterklasse muss die run()-Methode der Thread-Klasse implementieren, und die run()-Methode enthält die Ausführungslogik des Threads. Threads werden dann erstellt, indem eine Instanz der Unterklasse erstellt wird.
class MyThread extends Thread {
public void run() {
// 线程的执行逻辑
}
}
public class Main {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start(); // 启动线程
}
}
Vorteil:
· Einfach, geeignet für einfache Thread-Aufgaben.
Mangel:
·Da Java keine Mehrfachvererbung unterstützt, ist die Methode zum Erben der Thread-Klasse nicht flexibel genug. Wenn Sie andere Klassen geerbt haben, können Sie die Thread-Klasse nicht erben.
Thread-Code kann nicht gemeinsam genutzt werden, da Thread-Code in Unterklassen gekapselt ist.
2. Implementieren Sie die Runnable-Schnittstelle
Auf diese Weise wird ein Thread erstellt, indem eine Klasse erstellt wird, die die Runnable-Schnittstelle implementiert, und dann eine Instanz dieser Klasse an die Thread-Klasse übergeben wird. Klassen, die die Runnable-Schnittstelle implementieren, müssen die run()-Methode implementieren, die die Ausführungslogik des Threads enthält.
class MyRunnable implements Runnable {
public void run() {
// 线程的执行逻辑
}
}
public class Main {
public static void main(String[] args) {
MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start(); // 启动线程
}
}
Vorteil:
· Flexibler, da Sie andere Schnittstellen implementieren oder andere Klassen erben können.
·Thread-Code kann gemeinsam genutzt werden und mehrere Threads können dieselbe Runnable-Instanz gemeinsam nutzen.
Mangel:
Etwas komplizierter als die Art und Weise, die Thread-Klasse zu erben, müssen Sie ein Runnable-Objekt erstellen und es dann an Thread übergeben.
3. Lambda-Ausdrücke verwenden (Java 8 und höher)
Java 8 führt Lambda-Ausdrücke ein, was die Erstellung von Threads prägnanter macht. Sie können Lambda-Ausdrücke verwenden, um die Ausführungslogik von Threads zu definieren.
public class Main {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
// 线程的执行逻辑
});
thread.start(); // 启动线程
}
}
Vorteil:
· Äußerst prägnant, reduziert redundanten Code.
· Externe Variablen können einfacher erfasst werden.
Mangel:
· Gilt nur für Java 8 und spätere Versionen.
Zusammenfassen:
Die Auswahl, wie Threads erstellt werden, hängt von den Anforderungen und der Komplexität Ihres Projekts ab. Im Allgemeinen ist die Implementierung der Runnable-Schnittstelle flexibler und wird empfohlen, da sie nicht durch die Java-Einzelvererbung eingeschränkt wird und die Codefreigabe unterstützt. Die Lambda-Ausdrucksmethode ist die prägnanteste Methode in Java 8 und späteren Versionen, funktioniert jedoch nicht für ältere Java-Versionen. Die Methode zum Erben der Thread-Klasse eignet sich für einfache Thread-Aufgaben, kann jedoch in komplexen Fällen die Flexibilität des Codes einschränken.