1、ReentrantLock是一个类,synchronized是一个关键字,都是在JVM层面实现的互斥锁的方式。
2、功能方面ReentrantLock的功能要比synchrized更为全面,RenntrantLock能够支持公平锁和非公平锁,synchronized只能支持非公平锁、ReentrantLock可以指定等待锁资源的时间。
3、效率区别:
如果竞争比较激烈,推荐ReentrantLock去实现,不存在锁升级概念。而synchronized是存在锁升级概念的,如果升级到重量级锁,是不存在锁降级的。
底层实现区别:
实现原理是不一样,ReentrantLock基于AQS实现的,synchronized是基于ObjectMonitor