0Pricing
Java Academy · Lektion

Typische Fehler bei Nebenläufigkeit

Erkennen Sie typische Fehler bei nebenläufigem Code: Race Conditions, Deadlocks und Sichtbarkeitsprobleme.

Typische Fehler bei Nebenläufigkeit ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Java Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Java Academy-Kurs umfasst insgesamt 3 Lektionen.

Einführung

Nebenläufigkeit kann Fehler verursachen: Race Conditions, Deadlocks, Verhungern von Threads und Sichtbarkeitsprobleme.

Race Conditions

Race Conditions treten auf, wenn Threads unvorhersehbar ineinandergreifen und dadurch falsche Ergebnisse entstehen.

Code: Race Condition

Ohne Synchronisierung überschneiden sich die Erhöhungen, wodurch falsche Zählerstände entstehen.

public class Main {
  private int count = 0;
  public void increment() { count++; }
  public static void main(String[] args) throws Exception {
    Main obj = new Main();
    Thread t1 = new Thread(() -> { for(int i=0;i<1000;i++) obj.increment(); });
    Thread t2 = new Thread(() -> { for(int i=0;i<1000;i++) obj.increment(); });
    t1.start(); t2.start();
    t1.join(); t2.join();
    System.out.println("Count (expected 2000) = " + obj.count);
  }
}

Deadlock

Deadlock: Zwei Threads halten jeweils eine Sperre und warten auf die Sperre des anderen, sodass beide blockiert bleiben.

Code: Deadlock

Dieser Code kann einen Deadlock verursachen: Jeder Thread wartet für immer auf die Sperre des anderen.

public class Main {
  private final Object lock1 = new Object();
  private final Object lock2 = new Object();
  public void method1() {
    synchronized(lock1) {
      try { Thread.sleep(50); } catch(Exception e) {}
      synchronized(lock2) { System.out.println("method1"); }
    }
  }
  public void method2() {
    synchronized(lock2) {
      try { Thread.sleep(50); } catch(Exception e) {}
      synchronized(lock1) { System.out.println("method2"); }
    }
  }
  public static void main(String[] args) {
    Main obj = new Main();
    new Thread(obj::method1).start();
    new Thread(obj::method2).start();
  }
}

Code: Sichtbarkeitsproblem

Ohne volatile sieht ein Thread die Aktualisierungen eines anderen möglicherweise aufgrund der Zwischenspeicherung nicht.

public class Main {
  private static boolean flag = false;
  public static void main(String[] args) throws Exception {
    Thread writer = new Thread(() -> { flag = true; });
    Thread reader = new Thread(() -> { while(!flag) {} System.out.println("Flag seen true"); });
    writer.start(); reader.start();
    writer.join(); reader.join();
  }
}

Prüfung zu Nebenläufigkeitsfehlern

Schnelltest: Welches Problem tritt auf, wenn zwei Threads für immer auf die Sperren des jeweils anderen warten?

Zusammenfassung

Zusammenfassung: Zu den Fehlern gehören Race Conditions, Deadlocks und Sichtbarkeitsprobleme. Synchronisierung und volatile helfen, diese zu vermeiden.

Häufig gestellte Fragen

Ist die Lektion „Typische Fehler bei Nebenläufigkeit“ kostenlos?

Ja — der vollständige Text von „Typische Fehler bei Nebenläufigkeit“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Java Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Java Academy-Kurs umfasst insgesamt 3 Lektionen.

Was lerne ich in „Typische Fehler bei Nebenläufigkeit“?

Erkennen Sie typische Fehler bei nebenläufigem Code: Race Conditions, Deadlocks und Sichtbarkeitsprobleme. Du übst Java Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Java Academy zu starten?

Keine Vorkenntnisse erforderlich. Java Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 3.

Wie lange dauert die Lektion „Typische Fehler bei Nebenläufigkeit“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Java Academy-Lektion Code schreiben und ausführen?

Ja. Jede Java Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Synchronisierung und Sperren
  2. Atomare und nebenläufige Collections
  3. Typische Fehler bei Nebenläufigkeit
← Zurück zu Java Academy