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

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

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

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

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

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

相关推荐
阿里嘎多学长12 小时前
2026-08-30 GitHub 热点项目精选
开发语言·程序员·github·代码托管
pnoker12 小时前
36 个驱动模块:应对协议碎片化
java·物联网·modbus·工业互联网·opc ua
码上有光12 小时前
Linux:进程控制和进程替换
java·linux·服务器·进程控制·进程替换
默辨12 小时前
我用Java后端的视角读了一遍JoyAgent-JDGenie
java·开发语言
常山云栈12 小时前
如何理解python中的鸭子模(类)型?
开发语言·python
SQL-First布道者13 小时前
⚡ Spring JDBC 完整体系 · 第 5 讲 · Spring Boot Starter JDBC
java·spring boot·spring·mybatis·spring jdbc
y = xⁿ13 小时前
DeepSeek harness工具系统什么设计的?
开发语言·python
宋哥转AI13 小时前
深入理解 AI Agent · 多 Agent 编排 #03:Supervisor 与 Orchestrator——Dream-SaaS 双层编排架构拆解
java·人工智能·ai
luj_176813 小时前
尾椎藏今生记忆?骨盆对应不确定性
开发语言·网络·c++·经验分享·算法