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

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

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

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

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

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

相关推荐
HugoStudio_SWAN4 分钟前
C++ CMD 互动动画:按键触发爆炸效果
开发语言·c++·学习·程序人生
wuminyu6 分钟前
Java FFM处理网络读写事件源码剖析
java·linux·c语言·jvm·c++
互联网中的一颗神经元7 分钟前
10. Large 对象分配:直接路径
开发语言·golang
小江的记录本17 分钟前
【AI Agent】《2026年9月 AI Agent全栈开发技术选型专项面试宝典》
java·spring boot·python·spring·ai·面试·ai编程
梦梦代码精1 小时前
《LikeShop全产品技术硬核拆解:ThinkPHP8+Vue3+UniApp架构,私有化部署与二次开发实战指南》
java·低代码·系统架构·php·开源软件
一木 之林1 小时前
C/C++ 面向对象编程(OOP)(进阶)
java·c语言·c++
摇滚侠1 小时前
《SpringBoot 3:入门与应用实战》第 9 章 使用 WebMvc 开发应用 阅读笔记 2
java·spring boot·笔记
mayaairi2 小时前
JS BOM完全指南(二):事件轮询、三大尺寸家族与浏览器对象详解
开发语言·javascript·ecmascript
technology_x2 小时前
液冷超充站设备厂家哪家好?2026年功率与散热对比
java·开发语言
SurpriseDPD2 小时前
bpftrace‑tasks 工具代码分析
开发语言·python