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

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

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

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

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

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

相关推荐
f狐0狸x几秒前
【C++修炼之路】C++ list容器基本用法详解
开发语言·c++·list
坚持就完事了6 分钟前
Java的OOP
java·开发语言
jllllyuz10 分钟前
基于MATLAB的锂电池物理对象建模实现
开发语言·matlab
MyBFuture14 分钟前
C#数组详解:一维二维与交错数组
开发语言·windows·c#·visual studio·vision pro
像少年啦飞驰点、18 分钟前
零基础入门 Spring Boot:从“Hello World”到可部署微服务的完整学习路径
java·spring boot·微服务·编程入门·后端开发
程序 代码狂人31 分钟前
CentOS7初始化配置操作
linux·运维·开发语言·php
从此不归路33 分钟前
Qt5 进阶【13】桌面 Qt 项目架构设计:从 MVC/MVVM 到模块划分
开发语言·c++·qt·架构·mvc
zhangx1234_34 分钟前
C语言 数据在内存中的存储
c语言·开发语言
星空露珠35 分钟前
速算24点检测生成核心lua
开发语言·数据库·算法·游戏·lua
undsky_36 分钟前
【RuoYi-SpringBoot3-Pro】:将 AI 编程融入传统 java 开发
java·人工智能·spring boot·ai·ai编程