1、synchronized是关键字,而Lock是一个接口
2、synchronized会自动释放锁,而Lock必须手动释放锁
synchronized的实现都是通过虚拟机指令自动完成的
Lock需要手动书写代码来释放锁
3、synchronized是不可中断的,Lock可以中断也可以不中断(https://www.cnblogs.com/zhai1997/p/13528463.html)
4、 通过Lock可以知道线程有没有拿到锁,而synchronized不能
5、synchronized能锁住方法和代码块,而Lock只能锁住代码块
Lock:
synchronized:
6.、Lock可以使用读锁提高多线程读效率
7.、synchronized是非公平锁,ReentrantLock可以控制是否是公平锁(https://www.cnblogs.com/zhai1997/p/13474434.html)
原文:https://www.cnblogs.com/zhai1997/p/13544504.html