0Pricing
Java Academy · Lektion

Synchronisierung und Sperren

Verwenden Sie synchronized-Blöcke und explizite Sperren, um den Zugriff auf gemeinsam genutzte Ressourcen zu koordinieren.

Synchronisierung und Sperren ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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

Synchronisierung verhindert Race Conditions, wenn mehrere Threads auf gemeinsam genutzte Daten zugreifen.

synchronized

Das Schlüsselwort synchronized stellt sicher, dass jeweils nur ein Thread einen Block oder eine Methode betritt.

Code: synchronized-Methode

Diese synchronized-Methode verhindert Race Conditions beim Erhöhen eines Zählers.

public class Main {
  private int count = 0;
  public synchronized 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 = " + obj.count);
  }
}

synchronized-Block

Sie können anstelle ganzer Methoden auch nur kritische Abschnitte synchronisieren und dadurch die Konkurrenz um Ressourcen verringern.

Code: synchronized-Block

Ein synchronized-Block schützt nur die Zeile, in der der Zähler erhöht wird, also den kritischen Abschnitt.

public class Main {
  private int count = 0;
  public void add() {
    synchronized(this) {
      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.add(); });
    Thread t2 = new Thread(() -> { for(int i=0;i<1000;i++) obj.add(); });
    t1.start(); t2.start();
    t1.join(); t2.join();
    System.out.println("Count = " + obj.count);
  }
}

Code: ReentrantLock

ReentrantLock bietet explizite Sperren mit zusätzlicher Flexibilität, beispielsweise tryLock() und Optionen für faire Zugriffsverteilung.

import java.util.concurrent.locks.*;public class Main {
  private int count = 0;
  private Lock lock = new ReentrantLock();
  public void increment() {
    lock.lock();
    try { count++; }
    finally { lock.unlock(); }
  }
  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 = " + obj.count);
  }
}

Synchronisierungsprüfung

Schnelltest: Welchen Zweck hat das Schlüsselwort synchronized?

Zusammenfassung

Zusammenfassung: Verwenden Sie synchronized zur gegenseitigen Ausschließung, Blöcke für eine feinere Steuerung und explizite Sperren für fortgeschrittene Szenarien.

Häufig gestellte Fragen

Ist die Lektion „Synchronisierung und Sperren“ kostenlos?

Ja — der vollständige Text von „Synchronisierung und Sperren“ 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 „Synchronisierung und Sperren“?

Verwenden Sie synchronized-Blöcke und explizite Sperren, um den Zugriff auf gemeinsam genutzte Ressourcen zu koordinieren. 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 1 von 3.

Wie lange dauert die Lektion „Synchronisierung und Sperren“?

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