gpt4 book ai didi

java - 在java中使用信号量并存储到数组中

转载 作者:行者123 更新时间:2023-12-02 03:15:52 25 4
gpt4 key购买 nike

我是使用信号量的新手,所以请耐心等待。所以,假设我有 7 个许可证要发放,总共 49 个人(线程)正在等待它们。如果我获取()前 7 个人的信号量并将它们存储到列表数组中(存储人员的信号量),例如将它们传递到另一个类中。然后,如果我返回到该数组并循环并释放()其他类中的信号量,那么是否应该触发其他线程等待获取下一个键?因为我刚刚编写的代码做到了这一点,并且接下来的 7 个线程没有获取 key 。我没有发布代码,因为我只是想从概念上理解我错过了什么,然后实现它。

最佳答案

如果您想要一次最多有 7 个线程处于 Activity 状态,你只需要 1 个信号量,如下所示:

Semaphore available = new Semaphore(7, true);

并让每个线程针对这个信号量实例(由所有线程共享)调用 available.acquire() (最终available.release()) ),就是这样。

这是 java.util.concurrent.Semaphore javadoc 所说的内容:

A counting semaphore. Conceptually, a semaphore maintains a set of permits. Each acquire() blocks if necessary until a permit is available, and then takes it. Each release() adds a permit, potentially releasing a blocking acquirer. However, no actual permit objects are used; the Semaphore just keeps a count of the number available and acts accordingly.

关于java - 在java中使用信号量并存储到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40320615/

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