我正在阅读Java Concurrency in Practice一书.在一节java.util.concurrent.Semaphore中,书中有以下几行.它是关于其"虚拟许可"对象的实现的评论
该实现没有实际的许可对象,
Semaphore也没有将分配的许可与线程相关联,因此在一个线程中获得的许可可以从另一个线程中释放.您可以将其acquire视为消费许可和release创建许可; aSemaphore不限于创建它的许可数量.
有人可以解释一下吗?我无法理解这一点.如果我们创建一个固定大小的池,我们会创建固定数量的"许可".从上面的陈述看,"许可证"似乎可以继续增长.为什么这样设计?
有谁知道这些方法之间的差异acquire ()和release ()(java.util.concurrent.Semaphore)和await ()和signal (new ReentrantLock().newCondition() ).
你能为这些方法公开一个伪代码吗?