ReentrantLock为互斥锁,跟synchronized一样。
如果竞争比较激烈推荐使用ReentrantLock锁。如果几乎没有竞争使用synchronized。 synchronized锁有锁升级,当升级到重量级锁无法降级,重量级锁会设置到线程挂起,所以效率低。
Lock锁是公平 + 非公平锁,synchronized是非公平锁 Lock锁还提供了 reentrantLock.lockInterruptibly();允许线程在获取锁的期间被中断 Lock锁基于AQS和CAS实现,synchronized基于对象实现