Java-Threads sind ein grundlegender Teil des Gleichzeitigkeitsmodells von Java, mit dem mehrere Aufgaben gleichzeitig in einem Programm ausgeführt werden können. Ein Thread ist ein leichtgewichtiger Prozess, der die parallele Ausführung von Code ermöglicht und so die Leistung und Reaktionsfähigkeit der Anwendung verbessert, vor allem in Multicore-Systemen.
Verwendung
Threads werden in Java verwendet, um Hintergrundoperationen durchzuführen, ohne den Hauptprogrammfluss zu unterbrechen. Sie sind ideal für Aufgaben wie das Verarbeiten von Benutzereingaben, das Ausführen von Berechnungen oder das gleichzeitige Verwalten von E/A-Operationen.
Threads erstellen
Java bietet zwei primäre Möglichkeiten, um Threads zu erstellen:
Erweitern der Klasse Thread
Die Implementierung der Schnittstelle Runnable
Beispiele
Beispiel 1: Ausweitung der Thread Klasse
classMyThreadextendsThread{publicvoidrun(){System.out.println("Thread is running.");}publicstaticvoidmain(String[] args){MyThread thread =newMyThread();
thread.start();}}Bereitgestellt von
In diesem Beispiel erweitert eine neue Klasse MyThread die Klasse Thread und überschreibt die Methode run(). Die Methode start() wird aufgerufen, um die Ausführung des Threads zu beginnen, der intern die Methode run() aufruft.
Beispiel 2: Die Umsetzung der Runnable Schnittstelle
classMyRunnableimplementsRunnable{publicvoidrun(){System.out.println("Thread is running.");}publicstaticvoidmain(String[] args){Thread thread =newThread(newMyRunnable());
thread.start();}}Bereitgestellt von
Hier implementiert die Klasse MyRunnable die Schnittstelle Runnable und bietet die Methode run(). Ein Thread Objekt wird mit einer Instanz von MyRunnable erstellt und mit der Methode start() gestartet.
Beispiel 3: Lambda-Ausdrücke verwenden
publicclassLambdaThreadExample{publicstaticvoidmain(String[] args){Thread thread =newThread(()->{System.out.println("Thread is running using lambda.");});
thread.start();}}Bereitgestellt von
Dieses Beispiel demonstriert die Erstellung eines Threads mithilfe der Lambda-Ausdrücke von Java 8, die die Syntax für die Implementierung der Schnittstelle Runnable vereinfachen.
Tipps und bewährte Praktiken
Gewindesicherheit: Stelle sicher, dass der Zugriff auf gemeinsame Ressourcen thread-sicher erfolgt, um Dateninkonsistenzen und Race Conditions zu vermeiden. Verwende Synchronisationsmechanismen wie synchronized blocks oder ReentrantLock.
Vermeide eine Überbeanspruchung: Wenn du zu viele Threads erstellst, kann das zur Erschöpfung der Ressourcen führen. Verwende Thread-Pools (z.B. ExecutorService), um Threads effizient zu verwalten.
ExecutorService executor =Executors.newFixedThreadPool(10);
executor.execute(newMyRunnable());
executor.shutdown();Bereitgestellt von
Gnadenlose Beendigung: Implementiere einen Mechanismus zur ordnungsgemäßen Beendigung von Threads, wenn sie nicht mehr benötigt werden. Verwende Flags oder Interrupts, um Threads das Anhalten zu signalisieren.
classMyRunnableimplementsRunnable{privatevolatileboolean running =true;publicvoidrun(){while(running){// perform task}}publicvoidstop(){
running =false;}}Bereitgestellt von
Verwenden Sie übergeordnete Gleichzeitigkeitsprogramme: Ziehe in Erwägung, die Java-Hilfsprogramme für Gleichzeitigkeit aus dem Paket java.util.concurrent zu verwenden, z. B. CountDownLatch, CyclicBarrier und ConcurrentHashMap, um komplexe Gleichzeitigkeitsaufgaben zu vereinfachen.
Behandle Ausnahmen: Behandle Ausnahmen immer innerhalb der Methode run(), um ein unerwartetes Beenden des Threads zu verhindern.
publicvoidrun(){try{// perform task}catch(Exception e){
e.printStackTrace();}}Bereitgestellt von
Java-Threads sind ein grundlegender Teil des Gleichzeitigkeitsmodells von Java, mit dem mehrere Aufgaben gleichzeitig in einem Programm ausgeführt werden können. Ein Thread ist ein leichtgewichtiger Prozess, der die parallele Ausführung von Code ermöglicht und so die Leistung und Reaktionsfähigkeit der Anwendung verbessert, vor allem in Multicore-Systemen.
Verwendung
Threads werden in Java verwendet, um Hintergrundoperationen durchzuführen, ohne den Hauptprogrammfluss zu unterbrechen. Sie sind ideal für Aufgaben wie das Verarbeiten von Benutzereingaben, das Ausführen von Berechnungen oder das gleichzeitige Verwalten von E/A-Operationen.
Threads erstellen
Java bietet zwei primäre Möglichkeiten, um Threads zu erstellen:
ThreadRunnableBeispiele
Beispiel 1: Ausweitung der
ThreadKlasseIn diesem Beispiel erweitert eine neue Klasse
MyThreaddie KlasseThreadund überschreibt die Methoderun(). Die Methodestart()wird aufgerufen, um die Ausführung des Threads zu beginnen, der intern die Methoderun()aufruft.Beispiel 2: Die Umsetzung der
RunnableSchnittstelleHier implementiert die Klasse
MyRunnabledie SchnittstelleRunnableund bietet die Methoderun(). EinThreadObjekt wird mit einer Instanz vonMyRunnableerstellt und mit der Methodestart()gestartet.Beispiel 3: Lambda-Ausdrücke verwenden
Dieses Beispiel demonstriert die Erstellung eines Threads mithilfe der Lambda-Ausdrücke von Java 8, die die Syntax für die Implementierung der Schnittstelle
Runnablevereinfachen.Tipps und bewährte Praktiken
synchronizedblocks oderReentrantLock.ExecutorService), um Threads effizient zu verwalten.java.util.concurrentzu verwenden, z. B.CountDownLatch,CyclicBarrierundConcurrentHashMap, um komplexe Gleichzeitigkeitsaufgaben zu vereinfachen.run(), um ein unerwartetes Beenden des Threads zu verhindern.