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, ...

Get Nebenläufige Programmierung mit Java now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.