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

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

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

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

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

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

相关推荐
jaysee-sjc5 分钟前
【苍穹外卖】Day01:从零认识企业级项目开发
java·开发语言·数据库·mysql·spring·intellij-idea·mybatis
雨辰AI7 分钟前
多租户数据库资源配额管控|避免租户资源抢占雪崩(金仓 / 达梦 / 高斯 /openGauss 全库原生适配)
java·大数据·数据库·后端
ThornArmor9 分钟前
《向内深潜,向外飞掠》
c语言·开发语言·c++·vim·visual studio
AI深栈10 分钟前
第 12 章 · AI智能体的结构化输出与流式响应
java·人工智能
传奇开心果编程10 分钟前
【仓颉语言基础语法学与练】第1课:从零开始
开发语言·学习·华为
君顾114 分钟前
本地AI错题纠正小程序:端侧推理与错题闭环实战
java·开发语言·错题
吠品17 分钟前
Python 写入 Excel 的两种主流方案实际用法总结
c语言·开发语言·算法
Wang's Blog20 分钟前
Java 服务器: Linux-yum在线安装与lrzsz文件传输
java·服务器
邪修king24 分钟前
Re:Linux 系统篇(三十一):库的制作与原理Chapter2:静态链接与程序加载 —— 从磁盘 ELF 到运行中进程的完整旅程
android·linux·运维·开发语言
geovindu25 分钟前
rust: Factory Method Pattern
开发语言·设计模式·rust·工厂方法模式·创建型模式