11.14 Verklemmungen und Fairness
Eine Verklemmung (deadlock, deadly embrace) ist ein zyklischer Wartezustand, in dem mehrere Stränge jeweils darauf warten, daß einer der anderen eine Sperre aufhebt.
Sie entsteht z.B. wenn zwei synchronisierte Methoden verschiedener Objekte sich gegenseitig aufrufen:
- Die Klasse von x enthalte eine synchronisierte Methode m , die die synchronisierte Methode y.p( ...) aufruft.
- Auch p sei synchronisiert und rufe eine synchronisierte Methode x.q(...) auf.
- Bei einem Aufruf von m wird zunächst die Sperre von x und dann über p die von y gesetzt.