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