簡體   English   中英

Java:信號量:生產者使用者:線程和ThreadGroup

[英]Java : Semaphore: Producer Consumer: Threads and ThreadGroup

我為生產者和消費者實現了一個信號量類。

一切正常,但是我現在感覺我們使用notifyAll來通知喚醒或通知所有線程的線程。

我想知道是否可以通過某種方式僅通知一組特定的組:就像生產者僅使用組或其他任何方式通知使用者線程,反之亦然。

PS:我是Java和Threading的新手。

在我看來,就像您在重新發明輪子。 信號量java.util.concurrent中可用。

此外,對於生產者/消費者數據結構,建議您只使用BlockingQueue

無論如何, notify方法會通知一個(未指定)服務員。 如果您確實需要允許通過的特定“命令”,我相信您將必須要通知notifyAll並“手動”確保只有相關的命令才能獲取該信號量。


對於您的特殊情況,在我看來,您需要一個等待生產者的等待時間,一個等待消費者的等待時間。 由於每個對象設置了一個等待集,因此不可能僅通知使用一個對象的使用者(或生產者)。 也許您所擁有的是兩個對象,一個對象被生產者獲取,一個對象被消費者獲取,然后執行consumerObj.notifyAll()producerObj.notifyAll() ,這取決於要喚醒的線程組。

Thread arr [] = new Thread[10];          
        ThreadGroup group = new ThreadGroup("test");
        group.enumerate(arr);
        group.notifyAll();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM