我不太明白 javadocs 中信号量描述中的以下内容。
注意,没有同步锁
当 acquire() 被调用时持有
会阻止一个项目被
回到了水池。信号量
封装同步
需要限制对池的访问,
与任何同步分开
需要保持一致性
泳池本身。
有人可以帮助我理解这一点及其含义吗?
信号量充当可用资源池深度的限制器;例如,容量为 10 的信号量最多允许 10 个线程同时获取它,并且任何其他尝试获取它的线程都将阻塞,直到其他线程之一释放它。
这与普通的互斥或监视器锁定有些不同,后者通常用于防止多个线程同时修改相同的变量并导致结果或程序状态不一致。
例如,考虑一个限制为 10 个连接的连接池。每个需要连接的线程将在其使用连接期间获取信号量(这可以防止太多线程同时请求连接),但是池对象在从其内部取出连接时也必须使用同步块或方法收集或将它们放回原处,以防止诸如丢失连接跟踪或由于两个不同线程同时请求而错误地将同一连接传递给两个不同线程之类的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)