Diese Vorlesung erklärt, was eine gemeinsame Ressource in nebenläufigen Anwendungen ist, warum Race Conditions und „verlorene Updates“ auftreten, und wie man Daten mit
synchronized schützt. Wir besprechen grundlegende Synchronisationsmuster (Methoden und Blöcke), sprechen über moderne Werkzeuge aus
java.util.concurrent (
Lock,
ReentrantLock,
Semaphore u. a.), sehen praktische Beispiele mit dem Inkrement eines Zählers und typische Fehler (Nicht-Atomarität von
i
++, falsches Lock-Objekt, Mythen über
volatile).