Если я объявляю ConcurrentHashMap<Person, Interests>
- Если я отменяют Person.hashCode()
привести в то же хэш-значение [плохой дизайн ты!], Так что все элементы расположены в том же ведре - Как по умолчанию concurrencyLevel [16] поможет одновременно пишет?Как установить параметр concurrencyLevel в ConcurrentHashMap, если мой hashCode() слаб?
Я понимаю, что в приведенном выше случае записи в карте не распространяются. Следовательно, при изменении конкретного <K,V>
, замок устанавливается на один и только один существующий hashBucket поэтому никакой другой поток не может модифицировать другие <K1,V1>
и выгоду от параллельных модификаций
Мне кажется, что ваше центральное допущение неверно. Javadoc явно заявляет, что '' concurrencyLevel' влияет на внутренний размер. – EJP
Как это влияет на внутренний размер? Скажем, у меня есть 100 элементов на моей карте, и все они входят в тот же Bucket. Поскольку все элементы попадают под один и тот же сегмент, только один поток может изменять карту, а остальные блокируются. – nsk