1、Synchronized是一个关键字,ReentrantLock是一个类;
2、Synchronized可以用来修饰普通方法、静态方法和代码块,而ReentrantLock只能用于代码块;
3、Synchronized会自动加锁与释放锁,ReentrantLock需要主动加锁和释放锁;
4、Synchronized的底层是JVM层面,ReentrantLock是API层面的锁;
5、Synchronized是非公平锁,ReentrantLock可以选择公平锁和非公平锁;
6、Synchronized锁的是对象,锁信息保存在对象头中,ReentrantLock通过代码中int类型的state标识来标识锁的状态;
7、Synchronized是不可以响应中断的,ReentrantLock可响应中断;
8、Synchronized底层由一个锁升级的过程。