1313 @see org.jctools.maps.NonBlockingHashMapLong
1414 */
1515public abstract class PrimitiveConcurrentMap <K ,V > implements PrimitiveKeyMap {
16- private final int numBuckets ;
1716 private final CloseableReadWriteLock .Padded [] locks ;
1817
1918 @ SuppressWarnings ({"resource" , "ConstantValue" })
2019 protected PrimitiveConcurrentMap (@ Positive int numBuckets ) {
2120 if (numBuckets < 1 || numBuckets > 100_000_000 )
2221 throw new IllegalArgumentException ("numBuckets must be between 1 and 100_000_000, but: " + numBuckets );
23- this .numBuckets = numBuckets ;
2422 this .locks = new CloseableReadWriteLock .Padded [numBuckets ];
2523 for (int i = 0 ; i < numBuckets ; i ++)
2624 locks [i ] = new CloseableReadWriteLock .Padded ();
@@ -45,7 +43,7 @@ protected ReentrantReadWriteLock.WriteLock writeLock (int lockIndex) {
4543 @ Override
4644 public int size () {
4745 int sum = 0 ;
48- for (int i = 0 ; i < numBuckets ; i ++){
46+ for (int i = 0 ; i < locks . length ; i ++){
4947 try (var __ = readAt (i )){
5048 sum += mapAt (i ).size ();
5149 }
@@ -55,7 +53,7 @@ public int size () {
5553
5654 @ Override
5755 public boolean isEmpty () {
58- for (int i = 0 ; i < numBuckets ; i ++) {
56+ for (int i = 0 ; i < locks . length ; i ++) {
5957 try (var __ = readAt (i )){
6058 boolean nonEmpty = mapAt (i ).size () > 0 ;
6159 if (nonEmpty )
@@ -67,22 +65,22 @@ public boolean isEmpty () {
6765
6866 @ Override
6967 public void clear () {
70- for (int i = 0 ; i < numBuckets ; i ++){
68+ for (int i = 0 ; i < locks . length ; i ++){
7169 try (var __ = writeAt (i )){
7270 mapAt (i ).clear ();
7371 }
7472 }
7573 }
7674
7775 protected int getBucket (long key ) {
78- return PrimitiveKeyMap .bucket (key , numBuckets );
76+ return PrimitiveKeyMap .bucket (key , locks . length );
7977 }
8078
8179 protected int getBucket (int key ) {
82- return PrimitiveKeyMap .bucket (key , numBuckets );// Integer.hashCode(key) == key
80+ return PrimitiveKeyMap .bucket (key , locks . length );// Integer.hashCode(key) == key
8381 }
8482
8583 protected int getBucket (Object key ) {
86- return PrimitiveKeyMap .bucket (key , numBuckets );
84+ return PrimitiveKeyMap .bucket (key , locks . length );
8785 }
8886}
0 commit comments