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.
