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.