Java 为什么ConcurrentHashMap使用';同步';计算机内部

Java 为什么ConcurrentHashMap使用';同步';计算机内部,java,synchronized,concurrenthashmap,reentrantlock,Java,Synchronized,Concurrenthashmap,Reentrantlock,ConcurrentHashMap的“computeIfAbsent”方法中包含以下代码: synchronized (r) { if (casTabAt(tab, i, null, r)) { ... 为什么不使用“ReentrantLock”?使用ReentrantLock会有什么好处?对于相同的功能,您必须为每个r维护这样一个锁,而不是依赖r的内在锁。是的,ReentrantLock应该针对每个b

ConcurrentHashMap的“computeIfAbsent”方法中包含以下代码:

            synchronized (r) {
                if (casTabAt(tab, i, null, r)) {
                  ...

为什么不使用“ReentrantLock”?

使用ReentrantLock会有什么好处?对于相同的功能,您必须为每个
r
维护这样一个锁,而不是依赖
r
的内在锁。是的,ReentrantLock应该针对每个bucket。为什么不呢?因为它比使用synchronized复杂得多,没有附加值。