1.synchronized依赖JVM实现,ReentranLock是JDK实现的.synchronized是内置锁,只要在代码开始的地方加synchronized,代码结束会自动释放.Lock必须手动加锁,手动释放锁.
2.ReenTrantLock比synchronized增加了一些高级功能.synchronized代码量少,自动化,但扩张性低,不够灵活;ReentantLock扩展性好,灵活,但代码量相对多.
3.两者都是可重入锁.都是互斥锁
4.synchronized是非公平锁,ReentrantLock可以指定是公平锁还是非公平锁.
参考:
synchronize关键字原理