Kum*_*lok 1 java multithreading semaphore producer-consumer
我为生产者和消费者实现了一个信号量类.
它工作正常,但我现在感觉我们使用notifyAll来通知唤醒或通知所有线程的线程.
我想知道是否有任何方式我们只能通知一组特定的组:生成器只使用组或其他任何方式通知消费者线程,反之亦然.
PS:我是java和Threading的新手.
在我看来,就像你重新发明轮子一样.包装中提供信号量.java.util.concurrent
此外,对于生产者/消费者数据结构,我建议你只使用一个BlockingQueue
.
无论如何,该notify
方法通知一个(未指定的)服务员.如果你确实需要一个特定的"订单"来通过,我相信你必须notifyAll
"手动"确保只允许相关的信号获得信号量.
对于你的特殊情况,在我看来,你需要为生产者提供一个等待集,并为消费者提供一个等待集.由于每个对象有一个等待集,因此不可能仅使用一个对象通知消费者(或生产者).也许你会后,有两个对象,一个由生产者收购,一个由消费者获得的,然后做consumerObj.notifyAll()
,或者producerObj.notifyAll()
,这取决于你想唤醒哪个线程组.
归档时间: |
|
查看次数: |
924 次 |
最近记录: |