ConcurrentHashMap — это потокобезопасная реализация map, разработанная для сценариев с конкурентным доступом. Она обеспечивает лучшую производительность, чем традиционные синхронизированные альтернативы в конкретных ситуациях.
ConcurrentHashMap работает оптимально когда:
тонкозернистой блокировки вместо полной блокировки всего mapConcurrentHashMap использует блокировку на основе сегментов (или блокировку на уровне bucket в более новых версиях):
| Сценарий | Лучший выбор |
|---|---|
| Много читателей, мало писателей | ConcurrentHashMap ✓ |
| Примерно равное число читателей и писателей | Hashtable или синхронизированный HashMap |
| Однопоточный доступ | Обычный HashMap |
Главная выгода — снижение конкуренции за блокировки. Поскольку блокировки применяются только при записи и только к затронутым сегментам, конкурирующие читатели никогда не блокируют друг друга. Это делает ConcurrentHashMap значительно быстрее, чем Hashtable или полностью синхронизированные альтернативы при нагрузках с преобладанием чтения.
Избегай ConcurrentHashMap когда:
ConcurrentHashMap использует блокировку на уровне сегментов или бакетов, что позволяет операциям чтения выполняться без получения каких-либо блокировок, обеспечивая конкурентные чтения без взаимной блокировки.
Новый — ещё не проверен сообществом
Вы