JDK 1.5 之前 synchronized 的性能是比较低的,但在 JDK 1.5 中,官方推出一个重量级功能 Lock,一举改变了 Java 中锁的格局。JDK 1.5 之前当我们谈到锁时,只能使用内置锁 synchronized,但如今我们锁的实现又多了一种显式锁 Lock。
前面的文章我们已经介绍了 synchronized,详见以下列表:
《synchronized 加锁 this 和 class 的区别!》《synchronized 优化手段之锁膨胀机制!》
《synchronized 中的 4 个优化,你知道几个?》
所以本文咱们重点来看 Lock。
Lock 简介
Lock 是一个顶级接口,它的所有方法如下图所示:
它的子类列表如下:
我们通常会使用 ReentrantLock 来定义其实例,它们之间的关联如下图所示:
“
PS:Sync 是同步锁的意思,FairSync 是公平锁,NonfairSync 是非公平锁。