没有合适的资源?快使用搜索试试~ 我知道了~
java ReentrantLock详解.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 133 浏览量
2022-06-26
21:33:33
上传
评论
收藏 16KB DOCX 举报
温馨提示
试读
4页
ReentrantLock java除了使用关键字synchronized外,还可以使用ReentrantLock实现独占锁的功能。而且ReentrantLock相比synchronized而言功能更加丰富,使用起来更为灵活,也更适合复杂的并发场景。这篇文章主要是从使用的角度来分析一下ReentrantLock。 ReentrantLock与synchronized来的区别 1.synchronized是独占锁,加锁和解锁的过程自动进行,易于操作,但不够灵活。ReentrantLock也是独占锁,加锁和解锁的过程需要手动进行,不易操作,但非常灵活。 2.synchronized可重入,因为加锁和解锁自动进行,不必担心最后是否释放锁;ReentrantLock也可重入,但加锁和解锁需要手动进行,且次数需一样,否则其他线程无法获得锁。 3.synchronized不可响应中断,一个线程获取不到锁就一直等着;ReentrantLock可以相应中断。
资源推荐
资源详情
资源评论
java~ReentrantLock 的介绍
ReentrantLock
java 除了使用关键字 synchronized 外,还可以使用 ReentrantLock 实现独占锁
的功能。而且 ReentrantLock 相比 synchronized 而言功能更加丰富,使用起来
更为灵活,也更适合复杂的并发场景。这篇文章主要是从使用的角度来分析一
下 ReentrantLock。
ReentrantLock 与 synchronized 来的区别
1. synchronized 是独占锁,加锁和解锁的过程自动进行,易于操作,但不够灵活 。
ReentrantLock 也是独占锁,加锁和解锁的过程需要手动进行,不易操作,但非常
灵活。
2. synchronized 可重入,因为加锁和解锁自动进行,不必担心最后是否释放锁;
ReentrantLock 也可重入,但加锁和解锁需要手动进行,且次数需一样,否则其他
线程无法获得锁。
3. synchronized 不可响应中断,一个线程获取不到锁就一直等着;ReentrantLock 可
以相应中断。
isFair()、isHeldByCurrentThread()和
isLocked()
1. lock.isFair()方法用来判断 lock 锁是公平锁还是非公平锁。公平锁是指,线程获得
锁的顺序是按其等待锁的先后顺序来的,先来先获得 FIFO。反之,非公平锁则是
线程随机获得锁的,lock 默认是非公平锁。
2. lock.isHeldByCurrentThread() 的 作 用 是 查 询 当 前 线 程 是 否 保 持 此 锁 定 , 和
lock.hasQueueThread()不同的地方是:lock.hasQueueThread(Thread thread)的
作用是判断当前线程是否处于等待 lock 的状态。
3. lock.isLocked()的作用是查询此锁定是否由任意线程保持。
spring redis lock 里有对 ReentrantLock 的使用,
org.springframework.integration.redis.util.RedisLockRegistry,
有兴趣可以看一下它的源码。
用法示例
资源评论
小兔子平安
- 粉丝: 209
- 资源: 1940
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功