Количество потоков для ConcurrentHashmap - PullRequest
0 голосов
/ 21 июня 2019

В ConcurrentHashmap (до Java 8) количество потоков, которые могут писать одновременно, зависит от количества сегментов или уровня параллелизма, который мы предоставляем?

1 Ответ

0 голосов
/ 21 июня 2019

Количество сегментов зависит от уровня параллелизма. Так что в конечном итоге это зависит от уровня параллелизма. По умолчанию это 16. Таким образом, 16 потоков могут работать на карте одновременно.

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

Ссылка:

https://medium.com/@itsromiljain/curious-case-of-concurrenthashmap-90249632d335

https://www.geeksforgeeks.org/concurrenthashmap-in-java/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...