在Java中阻塞集

时间:2016-10-20 13:31:59

标签: java multithreading concurrency java.util.concurrent java-threads

我需要使用多个线程,其中一些正在运行,其中一些线程正在等待,直到其他一些线程将它们唤醒。让我们说我有线程A,B,C,D,并希望能够唤醒/睡眠任何其他任何线程。所以,例如,我希望A有可能唤醒/睡眠B,C,D;我希望B有可能唤醒/睡眠A,C,D等为了这个目的我决定去BlockingQueue,以便我向BlockingQueue添加一些消息,即。

blockingQueue.put("Start A"); or blockingQueue.put("Stop A"); 

此队列在所有线程之间共享,以便每个线程都等待,直到出现消息。但是,这种方法显然有一个很大的缺点:当某个线程正在侦听针对该线程的消息时(线程A等待消息"启动A"并且必须忽略所有其他消息,如&#34 ;启动B"等),它必须明确检查他的消息是否在队列中,所以我必须使用.contains()方法并编写一些代码以实现我需要的东西。但是,也许,为此目的存在某种阻塞集。该集合允许执行以下操作:

blockingSet.get(E) //wait until element E appears in the set

0 个答案:

没有答案