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

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

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

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

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

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

相关推荐
lly2024064 分钟前
Perl 正则表达式
开发语言
dfyx99912 分钟前
Maven Spring框架依赖包
java·spring·maven
清水白石00816 分钟前
Python 函数式编程实战:从零构建函数组合系统
开发语言·python
郝学胜-神的一滴18 分钟前
Effective Modern C++ 条款36:如果有异步的必要请指定std::launch::async
开发语言·数据结构·c++·算法
小此方21 分钟前
Re:从零开始的 C++ STL篇(六)一篇文章彻底掌握C++stack&queue&deque&priority_queue
开发语言·数据结构·c++·算法·stl
0 0 029 分钟前
CCF-CSP 40-2 数字变换(transform)【C++】考点:预处理
开发语言·c++·算法
Web打印38 分钟前
Phpask(php集成环境)之08 tp5验证码无法显示
开发语言·php
茶杯梦轩40 分钟前
从零起步学习并发编程 || 第二章:多线程与死锁在项目中的应用示例
java·服务器·后端
日月云棠41 分钟前
JAVA JDK 11 特性详解
java
q***76561 小时前
工作中常用springboot启动后执行的方法
java·spring boot·后端