Why does the acquire() method in Semaphores not have to be synchronized?

后端 未结 3 1429
半阙折子戏
半阙折子戏 2021-01-02 23:30

I am getting into Semaphores in Java and was reading this article http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Semaphore.html . The only thing I don\'t

3条回答
  •  忘掉有多难
    2021-01-03 00:20

    Semaphores ought to be fast and therefore use the atomic concurrency primitives from the Unsafe class, like CAS (compare and swap).

    With these primitives synchronization happens on a much lower level and monitors are not needed. (Lock-free synchronization).

    In fact the synchronization is performed by a loop continously using CAS until the expected value equals the written/read value.

提交回复
热议问题