61. 什么是可重入锁(ReentrantLock)?重入性的实现原理是什么?

什么是可重入锁?
  1. ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复获取锁,即当前线程获取该锁后,没有中断,再次获取锁不会被阻塞。
  2. 在java关键字 synchronized 隐式支持重入性,synchronized 通过获取自增,释放自减的方式实现重入。与此同时,ReentrantLock 还支持公平锁和非公平锁两种方式。
重入性的实现原理

支持重入性首先需要解决两个问题:

  1. 在线程获取锁时,如果已经获取锁的线程是当前线程的话直接再次获取成功;
  2. 由于锁会被获取 n 次,那么只有锁在被释放同样的 n 次之后,该锁才算是完全释放成功。

ReentrantLock 支持两种锁:公平锁非公平锁

试问,何为公平性?

公平性是针对线程获取锁而言的,如果一个线程获取锁是公平的,那么锁的获取顺序就应该符合请求上的绝对时间顺序,满足FIFO。
通俗的讲就是,线程根据先后顺序执行

不公平锁

不讲武德,不管线程的什么先后执行顺序,谁抢到锁就是谁的,谁就先执行,干就完了!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值