synchronized 和Lock区别
https://blog.****.net/qq_29373285/article/details/85964460
1. 在实现上
synchronized是一个关键字,它基于JVM。它有锁升级过程,从偏向锁,轻量级锁,到重量级锁。
Lock是一个接口,它是基于JDK,它实现的主要实现类是ReentrantLock,它的使用也离不开AQS。
2. 在使用上
synchronized是隐式锁,加锁解锁对使用者是隐藏的,可以作用于方法,代码块和类。
Lock是显示锁,需要手动上锁和释放锁(lock和unlock)
3. 在功能上
-
Lock和synchronized都是互斥锁且支持可重入
-
Lock支持默认非公平锁,但支持公平锁,synchronized只支持非公平锁
-
lock的condition支持多个条件变量,但是synchronized
-
Lock 可中断,而 synchronized 不行