Threads

Aus FI-Wiki
Version vom 24. November 2025, 13:50 Uhr von Moettke (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== 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.…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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.