Когда я прочитал исходный код ConcurrentHashMap в Java 8, я узнал, что он использует поле sizeCtl для управления инициализацией и изменением размера: -1 — для инициализации, а остальные отрицательные значения — для изменения размера. Он будет использовать U.compareAndSwapInt(this, SIZECTL, sc, (rs = 0) {
Node[] tab, nt; int n, sc;
while (s >= (long)(sc = sizeCtl) && (tab = table) != null &&
(n = tab.length) < MAXIMUM_CAPACITY) {
int rs = resizeStamp(n);
if (sc < 0) {
if ((sc >>> RESIZE_STAMP_SHIFT) != rs || sc == rs + 1 ||
sc == rs + MAX_RESIZERS || (nt = nextTable) == null ||
transferIndex
Подробнее здесь: https://stackoverflow.com/questions/788 ... -rather-th
Почему младшие 16 бит sizeCtl вычисляют количество потоков от 1, а не от 0 в ConcurrentHashMap? ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как установить количество несущих потоков с помощью виртуальных потоков Java в Kubernetes
Anonymous » » в форуме JAVA - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Идеальное количество потоков несущей с использованием виртуальных потоков Java в Kubernetes
Anonymous » » в форуме JAVA - 0 Ответы
- 26 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Идеальное количество потоков несущей с использованием виртуальных потоков Java в Kubernetes
Anonymous » » в форуме JAVA - 0 Ответы
- 24 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Идеальное количество потоков несущей с использованием виртуальных потоков Java в Kubernetes
Anonymous » » в форуме JAVA - 0 Ответы
- 24 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Идеальное количество потоков несущей с использованием виртуальных потоков Java в Kubernetes
Anonymous » » в форуме JAVA - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-