Locks

jedes Java-Objekt kann als lock (Monitor, Sperre) dienen

synchronized-Blöcke: Betreten bei Lock-Besitz, Verlassen mit Lock-Rückgabe,

für jeden Lock: zu jedem Zeitpunkt kann ihn höchstens ein Thread besitzen

Object lock = ...
synchronized (lock) { ... } // Anweisung

synchronized void m () { ... } // Methode
==> void m () { synchronized (this) { ... } }

Locks sind re-entrant, damit aus einer synchronisierten Methode eine andere aufgerufen werden kann (mit dem Lock, den der Thread schon besitzt)



Johannes Waldmann 2013-02-01