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 不行

synchronized 和Lock区别