Semaphore
Semaphore 将 AQS 的同步状态用于保存当前可用许可的数量。
tryAcquireShared 方法首先计算剩余许可的数量,如果没有足够的许可,那么会返回一个值表示获取操作失败。如果还有剩余的许可,那么 tryAcquireShared 会通过 compareAndSetState 以原子方式来降低许可的计数。如果这个操作成功,那么将返回一个值表示获取操作成功。
tryReleaseShared 将增加许可计数,这可能会解除等待中线程的阻塞状态,并且不断地重试直到更新操作成功。tryReleaseShared 的返回值表示在这次释放操作中解除了其他线程的阻塞。
最后更新于