8 Lock-Objekte und Semaphore
Um einen Codeblock gegen konkurrierende Zugriffe zu schützen, wurde bis jetzt das Schlüsselwort synchronized verwendet, das automatisch eine Sperre anfordert. Dieses implizite Sperren ist von der Benutzung her zwar elegant, führt aber auch zu einigen Einschränkungen:
Ein auf die Sperre wartender Thread kann nicht unterbrochen werden. Wenn er im Warteraum ist, hat ein interrupt-Aufruf keine direkte Wirkung. Erst wenn er in den synchronized-Block eintritt und auf eine »interrupt-sensitive« Methode trifft, wird der Interrupt verarbeitet.
Es ist bei synchronized kein Timeout vorgesehen. Die Wartezeit eines Threads kann somit nicht begrenzt werden. Er kann daher eventuell sehr lange blockiert werden.
Es ist nicht klar, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access