2014-02-08 75 views
0

我有一個hazelcast實例添加對象到列表和其他節點刪除和添加對象到列表。我沒有在代碼中的任何同步。Hazelcast分佈式列表併發

只是

私人靜態列表>有序= h.getList( 「我的分佈清單」);

和節點添加/刪除有序列表中的作業。

我應該擔心跨多個機器上的節點同步嗎?說100個節點以上..

回答

2

有你需要小心的幾件事情:

列表本身是線程安全的,你不能併發訪問損壞它。

但是..如果你的邏輯不是線程安全的,那麼列表不會幫助你,

int indexOf = list.indexOf("foo"); 
if(index!=-1) { 
    list.remove(indexOf) 
} 

然後,這包含競爭問題,因爲讀取索引和刪除具有給定索引的項目不是原子操作。

除了在自己的邏輯中存在競爭問題之外,過多的競爭線程可能導致性能/可伸縮性問題,因爲列表並不是特別修改友好的數據結構。

所以如果你知道你在做什麼,那麼列表可以是你的朋友。

+0

是的,榛樹確實會給你一個分佈式的列表來使用。但它的併發性必須使用跨節點的鎖/同步來「處理」。另一方面地圖似乎是由榛樹'處理'。 – Hari

+0

Hazelcast列表不比地圖更少線程安全。 – pveentjer