2013-05-16 57 views
2

正如我們在Java Linked Blocking Queue中看到的,take()方法在從隊列中出隊之前採用lock/gaurds尾節點。所以沒有2個線程會從尾部取同一個節點。在動物園管理員的情況下,觀察隊列根節點的所有進程都將得到通知,並且他們都可以抓取同一組節點並開始處理相同的節點。Zookeeper Queue with Lock

那麼,我怎麼能稱此爲分佈式隊列呢。我正在談論Zookeeper的生產者消費者reciepe。 http://zookeeper.apache.org/doc/r3.4.1/zookeeperTutorial.html#sc_producerConsumerQueues

回答

1

在示例代碼,耗時代碼的時候呢,

zk.delete(root + "/element" + min, 0); 

只有1個節點將成功執行刪除,所有其它進程,它試圖刪除將拋出一個錯誤,讓消費者知道,他是唯一一個消費該元素的人。