Предположим, есть три потока, которые хотят получить доступ к одному и тому же объекту ConcurrentHashMap Java (Java 7). Эти три потока работают как put, remove и get соответственно. Не могли бы вы помочь мне понять, как ConcurrentHashMap сможет помещать, удалять и получать запись карты (ключ, значение) для одного и того же сегмента в одно и то же время для нескольких потоков в Java (Java 7)? Пожалуйста, укажите, есть ли какие-либо обновления в Java 8 для того же.
Изменить:
Что означает сегмент в ConcurrentHashMap согласно Java 7?
Уровень параллелизма, разрешенный во время операций обновления, может быть установлен необязательным аргументом конструктора concurrencyLevel (по умолчанию 16) [ ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel) ] , который используется в качестве подсказки для внутреннего размера, для внутреннего разделения ConcrrentHashMap, такой раздел обычно известен как Segment. Каждый сегмент управляет своей собственной HashTable. ConcurrentHashMap по умолчанию поддерживает список из 16 сегментов.
Спасибо и С уважением.
source.zip
в папке JDK. --- На абстрактном уровне эффект будет таким, как если бы 3 потока выполняли свои операции в разное время, в произвольном порядке, а не все 3 в одно и то же время, подобно изоляции SQL Serializable уровень. - person Andreas   schedule 09.02.2020