2013-03-02 2 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

Смежные вопросы