java并发编程,lock(),trylock(),lockInterruptibly()的区别

首先lock是一种用于共享变量同步的手段,与synchronized不同,它需要显式的上锁和解锁。

lock提供的api接口中有几个值得注意的地方:

lock优先获取锁,只要拿不到锁就一直在阻塞状态,一直阻塞到获取到锁。

trylock则是就尝试一次,拿到了返回true,没拿到返回false,带时间限制的话拿不到会等一会,超出时间限制还没拿到才会返回false。

lockInterruptibly和lock类似,也是一直尝试获取锁,只要没获取到就一直阻塞,直到获取到锁。但是线程会响应中断命令,如果有其他线程发送了中断(Interrupt)指令,那该线程会中断,放弃获取锁,去throw InterruptedException

相关推荐
上海云盾-高防顾问4 分钟前
DNS异常怎么办?快速排查+解决指南
开发语言·php
开发者小天9 分钟前
python安装 Matplotlib 库 安装 Seaborn 库
开发语言·python·matplotlib
wjs202410 分钟前
《Foundation 折叠列表:设计与应用解析》
开发语言
Diligently_26 分钟前
idea 中vm option 配置
java·ide·intellij-idea
短剑重铸之日30 分钟前
《Seata从入门到实战》第七章:seata总结
java·后端·seata
予枫的编程笔记32 分钟前
【Kafka高级篇】避开Kafka原生重试坑,Java业务端自建DLQ体系,让消息不丢失、不积压
java·kafka·死信队列·消息中间件·消息重试·dlq·java业务开发
晞子的技术札记33 分钟前
单相Heric并网逆变器工作原理及MATLAB仿真测试
开发语言·matlab
上官-王野1 小时前
公务员暂停工伤保险
java
李云龙炮击平安线程1 小时前
Python中的接口、抽象基类和协议
开发语言·后端·python·面试·跳槽
十五年专注C++开发1 小时前
Qt deleteLater作用及源码分析
开发语言·c++·qt·qobject