synchronized und Monitore

Intermediate Algorithmen und Datenstrukturen Deutsch
Also available: English
Created by Best · 16.08.2026 at 09:13 UTC

synchronized in Java sperrt einen Monitor (Objekt). Nur ein Thread hält den Lock. Sichtbarkeit und atomare Abschnitte werden so hergestellt (happens-before).

Zu grobe Locks bremsen; zu feine sind fehleranfällig.

Wo gebraucht

Klassische JVM-Mutual-Exclusion. Grundlage, bevor man zu java.util.concurrent, Locks und lock-free Strukturen geht.

Vertiefung

Jedes Java-Objekt kann als Monitor dienen. Ein synchronized-Block erwirbt dessen intrinsische Sperre, führt den geschützten Abschnitt aus und gibt die Sperre beim Verlassen auch im Ausnahmefall frei. Nur Code, der denselben Monitor verwendet, schützt dieselbe Invariante gemeinsam.

Das Verlassen eines Monitors veröffentlicht vorherige Änderungen; ein späterer Erwerb desselben Monitors macht sie sichtbar. synchronized regelt damit sowohl gegenseitigen Ausschluss als auch Speicherordnung. Die Wahl eines privaten, stabilen Lockobjekts verhindert unbeabsichtigte externe Sperrkopplung.

Schwierigkeitsstufen

  1. Den Monitor einer Instanz- und einer statischen Methode bestimmen.
  2. Alle Zugriffe auf eine Invariante unter dasselbe Lock stellen.
  3. Lockumfang zwischen Sicherheit und Parallelität abwägen.

Fallstricke

Zwei verschiedene Lockobjekte schützen nicht gegeneinander. Öffentlich erreichbare oder wechselnde Lockobjekte sind ebenfalls riskant. Mehrere Sperren in uneinheitlicher Reihenfolge können einen Deadlock erzeugen.

University approvals: 0
Tasks
Question 1

Was bewirkt synchronized auf einem Objekt?

Question 2

Zwei Methoden schützen dasselbe Feld mit zwei verschiedenen Lockobjekten. Was ist das Problem?

Question 3

Implementiere LockedBox. set und get sollen den Monitor des Objekts verwenden.

Hint

Ein synchronized-Block auf dem aktuellen Objekt lautet synchronized (this) { ... }.

Starter code is prefilled; replace TODO blocks with your solution.
1 test case will be used for grading
Run checks runtime behavior only. Final correctness is evaluated when you submit.
Card Info
  • Topic: Algorithmen und Datenstrukturen
  • Difficulty: Intermediate
  • Completed: 0 users
Creator
Best
Best
BestBuddy