理论上讲是可以的,但我认为 synchronized 关键字会更好一点。因为在 JDK1.6 之后,synchronized 关键字也进行了一些优化,它里面引入了偏向锁、轻量级锁以及重量级锁,这些在 ReentrantLock 中是没有的。
并且随着 JDK 的升级,synchronized 也在进一步的优化,因为这个 ReentrantLock 是用 Java 代码实现的,所以在之后的话也很难有特别大的一种提升空间。
所以我会优先选择 synchronized 作为 ConcurrentHashMap 的锁,其次才选 ReentrantLock