gpt4 book ai didi

java - 信号量和同步

转载 作者:搜寻专家 更新时间:2023-10-30 21:08:29 24 4
gpt4 key购买 nike

我无法从 javadocs 中的信号量描述中完全理解以下内容。

Note that no synchronization lock is held when acquire() is called as that would prevent an item from being returned to the pool. The semaphore encapsulates the synchronization needed to restrict access to the pool, separately from any synchronization needed to maintain the consistency of the pool itself.

谁能帮我理解这个及其含义。

最佳答案

信号量充当可用资源池深度的限制器;例如,一个容量为 10 的信号量最多允许 10 个线程同时获取它,任何其他试图获取它的线程都将阻塞,直到其他线程之一释放它。

这与普通的互斥或监视器锁定有些不同,后者通常用于防止多个线程同时修改相同的变量而导致结果或程序状态不一致。

例如,考虑一个限制为 10 个连接的连接池。每个需要连接的线程都将在其使用连接期间获取信号量(这可以防止太多线程同时请求连接),但是池对象在从其内部获取连接时也必须使用同步块(synchronized block)或方法收集或将它们放回原处,以防止丢失连接跟踪或错误地将同一连接交给两个不同的线程,因为它们同时请求。

关于java - 信号量和同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3939093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com