我写一个BlockingQueue的,我想知道其他实现方式是如何解决这个问题:BlockingQueue的设计有多个显示器
如果我只有一个监视器(队列对象),并让生产者和消费者wait
,我则要保证notifyAll
而不是notify
被调用,否则生产者可能只会发信号通知另一个等待的生产者继续,即使队列已满。即使有东西可用,也让消费者等待。另一方面,调用notifyAll
似乎不是许多线程和处理器的可伸缩解决方案。
请问BlockingQueue
是否使用两台显示器?一个是生产者等待,一个是消费者等待?然后,我将不得不以封装方式同步队列和相关监视器。这是要走的路吗?
我假设你已经有了一起来看看在【JAVA]阻塞队列的实现(http://download.oracle.com/javase/1,5,0/docs/api/java/util/concurrent/BlockingQueue html的)? – JimmyB
谢谢,不,我能看到它吗? –
下载并安装任何Java SDK> = 5.0,找到其中包含源代码的标准Java API的文件“src.zip”。如果使用Eclipse,你可能想将这个文件作为“源文件”附加到轻松导航和获取源代码和Javadoc的“rt.jar中”库。 – JimmyB