2013-06-30 2 views

ответ

2

ConcurrentHashMap конструктор

public ConcurrentHashMap(int initialCapacity, 
          float loadFactor, int concurrencyLevel) { 

Вы можете очень хорошо определить уровень параллелизма по желанию вы. Что касается второго вопроса. Вот на JavaDoc комментарий от ConncurrentHashMap (Java 1.6)

* Ideally, you should choose a value to accommodate as many 
* threads as will ever concurrently modify the table. Using a 
* significantly higher value than you need can waste space and time, 
* and a significantly lower value can lead to thread contention. 

Так в идеале, если вы не знаете, вещи, как большая карта может стать или сколько нить будет доступ к карте, лучшие значения по умолчанию использовать параллелизм (который в настоящее время составляет 16).

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/concurrent/ConcurrentHashMap.java

Надежда свою помощь!

+0

Однако ConcurrencyLevel внутренне ограничено 65536 (максимальный параллелизм) – veritas

+0

Насколько высока вероятность параллелизма? Я имею в виду, если я сохраняю initialCapacity как 16 и concurrencyLevel как 20 и loadfactor как 0.75f. то что будет размером в сегментный массив? Я пропустил что-то основное, но не понял. – Jayesh

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