Есть ли недостатки у ConcurrentHashMap?

Мне нужна HashMap, доступная из нескольких потоков.

Есть два простых варианта: использование обычного HashMap и синхронизация на нем или использование ConcurrentHashMap.

Поскольку ConcurrentHashMap не поддерживает блок для операций чтения, кажется, намного лучше подходит для моих нужд (почти исключительно читает, почти никогда не обновляет). используя обычный HashMap и синхронизируя его или используя ConcurrentHashMap. Поскольку ConcurrentHashMap не ...

Мне нужна HashMap, доступная из нескольких потоков.

Есть два простых варианта: использование обычного HashMap и синхронизация на нем или использование ConcurrentHashMap.

Поскольку ConcurrentHashMap не поддерживает блок для операций чтения, кажется, намного лучше подходит для моих нужд (почти исключительно читает, почти никогда не обновляет). используя обычный HashMap и синхронизируя его или используя ConcurrentHashMap. Поскольку ConcurrentHashMap не ...

Мне нужна HashMap, доступная из нескольких потоков.

Есть два простых варианта: использование обычного HashMap и синхронизация на нем или использование ConcurrentHashMap.

Поскольку ConcurrentHashMap не поддерживает блок для операций чтения, кажется, намного лучше подходит для моих нужд (почти исключительно читает, почти никогда не обновляет). С другой стороны, я все равно ожидаю очень низкого параллелизма, поэтому не должно быть никакой блокировки (только стоимость управления блокировкой).

Карта также будет очень маленькой (менее десяти записей), если это имеет значение.

Насколько более затратны операции чтения и записи по сравнению с обычным HashMap (я предполагаю, что это так)? Или ConcurrentHashMap всегда лучше, когда может быть даже умеренный уровень одновременного доступа, независимо от соотношения чтения / обновления и размера?

5
задан Thilo 17 October 2010 в 02:01
поделиться