Ist es möglich, in ConcurrentHashMap in Java die Anzahl der Sperren größer als die Anzahl der Buckets zu haben? - Java, Multithreading, Sperren, Concurrenthashmap

Wie wir wissen, hat javas ConcurrentHashMap eine Reihe von internen Sperren, und jede von ihnen schützt eine Region des Bucket-Arrays.

public ConcurrentHashMap (int initialCapacity, load loadFaktor, int concurrencyLevel)

initialKapazität: 16; loadFactory: 0,75 f; Gleichzeitigkeitsniveau: 16.

d. h. Standard-ConcurrencyLevel und InitialCapacity sind gleich.

Es ist möglich, mehr Nein zu haben. von Schlössern als nein. von Eimern?

Antworten:

0 für die Antwort № 1

Nein, das CHM verwendet jeden Bucket als Sperre (vor Java 7 war jeder Bucket ein ReentrantLock jetzt wird jeder Eimer synchronized. Per Definition kann es also nicht mehr Sperren geben.


Speisekarte