Threads
Aus FI-Wiki
Threads
Ein Thread ist ein leichtgewichtiger Ausführungsstrang innerhalb eines Programms. Mehrere Threads können gleichzeitig laufen und ermöglichen parallele oder nebenläufige Ausführung von Aufgaben. Threads werden verwendet, um Programme schneller, reaktionsfähiger und effizienter zu machen – besonders bei lang laufenden oder blockierenden Aufgaben.
Warum Threads?
- mehrere Aufgaben gleichzeitig bearbeiten (z. B. Download + Benutzeroberfläche)
- schneller auf Benutzeraktionen reagieren
- Programme können moderne Mehrkern-Prozessoren besser ausnutzen
- Hintergrundprozesse ausführen, ohne das Hauptprogramm zu blockieren
Threads in Java erstellen
1. Thread durch Vererbung erstellen
class MeinThread extends Thread {
public void run() {
System.out.println("Thread läuft!");
}
}
new MeinThread().start();
2. Thread über Runnable erstellen
class Aufgabe implements Runnable {
public void run() {
System.out.println("Thread arbeitet!");
}
}
new Thread(new Aufgabe()).start();
3. Lambda-Ausdruck (kurz)
new Thread(() -> System.out.println("Lambda-Thread!")).start();
Wichtige Thread-Methoden
- start() – Thread starten
- run() – auszuführender Code (nicht direkt aufrufen!)
- sleep(ms) – pausieren
- join() – auf anderen Thread warten
- interrupt() – Thread unterbrechen
Synchronisation
Wenn mehrere Threads auf dieselben Daten zugreifen, kann es zu Konflikten kommen. Java bietet Mechanismen zur Synchronisation:
- synchronized
- Locks
- Semaphoren
- Concurrent Collections (z. B. ConcurrentHashMap)
Risiken
- Deadlocks (Threads warten gegenseitig unendlich)
- Race Conditions (ungeklärte Zugriffsreihenfolge)
- schwieriger zu testen und zu debuggen
- hoher Aufwand bei Synchronisation
Kurzmerksatz
Threads erlauben parallele Abläufe in einem Programm, müssen aber sorgfältig synchronisiert werden, um Fehler zu vermeiden.
