Похоже, у вас нет полного понимания ConcurrentHashMap и цели его внедрения. Он был введен для выполнения одновременных операций чтения и записи с минимальной блокировкой. Используя ConcurrentHashMap, можно одновременно блокировать разные части карты. В Java 8 они сделали ConcurrentHashMap более свободным от блокировок.
Concurrencylevel играет важную роль в определении различных значений атрибутов для ConcurrentHashMap.
1) Я пытаюсь начать понимать с самого первого вопроса, почему HashEntry впервые появился в Java 7 и почему он был удален в JDK8?
Ответ - Вы уверены, что он удален? Это вероятно все еще там под сегментами. Пожалуйста, смотрите ниже -
ConcurrentHashMap
2) Какой фактор определяет размер таблицы в CHM, это уровень параллелизма или емкость?
Ответ - Concurrencylevel решает все. Уровень параллелизма по умолчанию - 16 или 32. Вы также можете установить его программно.
3) уровень параллелизма играет две роли? Один из них заключается в определении размера таблицы, а затем в определении количества одновременных потоков, кто может обновить карту?
Ответ - ДА. Это дает подсказку для определения размеров. Обычно количество сегментов и параллельных потоков ограничено этим числом.
Какова роль уровня параллелизма во внутренней реализации CHM, т. Е. Как количество потоков ограничено с помощью этого значения переменной, какая часть реализации диктует это?
Вы можете проверить документацию оракула.
CocurrentHashMap
Для дальнейшего использования -
Java 8 ConcurrentHashMap