我寫一個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