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

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

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

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

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

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

相关推荐
方白羽3 分钟前
Kotlin遇上Java 静态方法
android·java·kotlin
通往曙光的路上5 分钟前
焚决糟糕篇
java·spring boot·tomcat
T***16078 分钟前
C++在游戏开发中的AI行为树
开发语言·c++
无心水22 分钟前
【Python实战进阶】5、Python字符串终极指南:从基础到高性能处理的完整秘籍
开发语言·网络·python·字符串·unicode·python实战进阶·python工业化实战进阶
狂奔小菜鸡35 分钟前
Day18 | 深入理解Object类
java·后端·java ee
jiayong2336 分钟前
Maven NUL文件问题 - 解决方案实施报告
java·maven
未秃头的程序猿37 分钟前
🔒 从单机到分布式:三大锁机制深度剖析与实战指南
java·后端
大猫子的技术日记40 分钟前
[百题重刷]前缀和 + Hash 表:缓存思想, 消除重复计算
java·缓存·哈希算法
4***14901 小时前
Rust系统工具开发实践指南
开发语言·后端·rust
s***35301 小时前
Spring Boot3.x集成Flowable7.x(一)Spring Boot集成与设计、部署、发起、完成简单流程
java·spring boot·后端