2013-03-02 58 views
2

我在閱讀IBM DeveloperWorks article以瞭解如何實現ConcurrentHashMap。部分「去除動作」,這表明該去除操作是一個兩個步驟的過程:ConcurrentHashMap實現在刪除操作中使用克隆嗎?

  1. 查找條目元件並使其無效
  2. 從頭部到被刪除的元素的鏈的部分被克隆並接合到移除元素後面的鏈的其餘部分。

我有一個問題在這裏,但因爲我在Docjar檢查相應的代碼,我沒有看到任何克隆在remove(Object key, int hash, Object value)

我不確定我是否缺少一些東西,或者實現與文章不同?

回答

2

head = new Entry(p.hash, p.key, p.value, head); 

做克隆,它不是一個「Object.clone()」的克隆,而是一個「拷貝構造函數」 - 這在更一般的意義上仍是克隆。

請注意,該行在10年前的文章中,並且在當前實現中找不到,其中remove(Object key, Object value)的實現完全不同。

+0

感謝您的指針,不知道是否有更多更新的文章,尋找指針 – Lav 2013-03-02 13:05:48