gpt4 book ai didi

Java : Semaphore: Producer Consumer: Threads and ThreadGroup

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

我已经为生产者和消费者实现了一个信号量类。

它工作正常,但我现在感觉我们使用 notifyAll 来通知唤醒的线程或通知所有线程。

我想知道是否有任何方法可以只通知一组特定的组:比如生产者只通知消费者线程,反之亦然使用组或其他任何方式。

PS:我是 java 和线程的新手。

最佳答案

在我看来,您是在重新发明轮子。 Semaphoresjava.util.concurrent package 中可用.

此外,对于生产者/消费者数据结构,我建议您只使用 BlockingQueue

无论如何,notify 方法会通知一位(未指定的)服务员。如果您确实需要一个特定的“命令”让哪些信号通过,我相信您必须 notifyAll 并“手动”确保只允许相关信号量获取信号量。


对于您的特殊情况,在我看来您需要一个用于生产者的等待集,一个用于消费者的等待集。由于每个对象都有一个等待集,因此不可能只通知使用一个对象的消费者(或生产者)。也许你想要的是有两个对象,一个被生产者获取,一个被消费者获取,然后执行 consumerObj.notifyAll()producerObj.notifyAll(),取决于你想唤醒哪组线程。

关于Java : Semaphore: Producer Consumer: Threads and ThreadGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7671609/

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