我必須存儲在使用多個哈希類引用的數據映射重裝具有併發讀者同時
Map map1;
Map map2;
Map map3;
它們是由多個讀者同時訪問多個緩存。我想在同一時間重新初始化它們。 如果它是一個單一的地圖,我只是做
public void reload(){
map1 = createNewMapWithLatestData();
}
由於現有的讀者都有老的參考和新的讀者得到它正常工作了新的參考。但是由於我有多個地圖,新讀者可能會得到最新版本的說明map1
和map2
,但是舊版本map3
,因爲替換操作不是原子的。
好的,所以我需要鎖定它,這使我想到了我的問題。除了使用鎖定所有內容之外,使用這種方法的優雅方式是什麼?
我只需要一個鎖,當重新加載實際發生時,而不是其他時間。 我看着java locks(Read write), Conditions, CyclicBarriers, Countdownlatches
等,但不知道什麼是正確的方法。
一切軟件可以用1級來解決重新定向/抽象......我再次學習它! – Abe
誰拒絕地圖的其他貢獻者保存某處引用「持有人」的地圖? – Andremoniy
@你應該知道,這隻會讓你的問題更加深入,就像手指上的碎片一樣。 – Andremoniy