page contents

什么是可重入锁(ReentrantLock)?

轩辕小不懂 发布于 2022-04-27 14:53
阅读 468
收藏 0
分类:Java开发
3501
Nen
Nen
- 程序员

ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞。

在java关键字synchronized隐式支持重入性,synchronized通过获取自增,释放自减的方式实现重入。与此同时,ReentrantLock还支持公平锁和非公平锁两种方式。那么,要想完完全全的弄懂ReentrantLock的话,主要也就是ReentrantLock同步语义的学习:

重入性的实现原理;

公平锁和非公平锁。

重入性的实现原理 要想支持重入性,就要解决两个问题:

在线程获取锁的时候,如果已经获取锁的线程是当前线程的话则直接再次获取成功;

由于锁会被获取n次,那么只有锁在被释放同样的n次之后,该锁才算是完全释放成功。

ReentrantLock支持两种锁:

公平锁 何谓公平性,是针对获取锁而言的,如果一个锁是公平的,那么锁的获取顺序就应该符合请求上的绝对时间顺序,满足FIFO。

非公平锁

请先 登录 后评论