gpt4 book ai didi

Java 信号量中的多线程概念

转载 作者:行者123 更新时间:2023-11-30 03:29:05 24 4
gpt4 key购买 nike

我创建了一个信号量

Semaphore semaphore =  new Semaphore(1);

我们重载了aquire方法,例如:

aquire()
aquire(int)

问题1:对于当前只有1个许可的信号量,第二个方法(aquire(int))有什么意义吗?

问题2:我还是有点困惑

new Semaphore(int)
new Semaphore(int,true)
new Semaphore(int, false)

Q3:如果我调用 release(),而不调用 aquire(),许可证数量会发生什么变化,是否会增加比我们声明的要多?

注意:有多个线程共享Semaphore对象。

感谢任何帮助。

最佳答案

如果您的Semaphore 一开始只有一个许可,并且单个线程尝试获取超过 1 个许可,则该线程将阻塞。假设没有其他线程调用必要数量的release,那么该线程将无限期地被阻塞。

overloaded constructorboolean 参数表示

if this semaphore will guarantee first-in first-out granting of permits under contention, else false

您在构造函数中指定的许可数量只是初始数量,而不是限制。

关于Java 信号量中的多线程概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29483366/

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