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

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

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

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

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

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

相关推荐
掘我的金10 小时前
播放器最怕“首帧黑屏”?我给 LibreTV 加了一套缓冲与预加载策略
java
froginwe1110 小时前
Maven 仓库概述
开发语言
低客的黑调10 小时前
为你的项目选择一个适合的[垃圾收集器]
java·jvm·算法
雨中飘荡的记忆10 小时前
优惠券系统设计与实现
java
1***t82710 小时前
将 vue3 项目打包后部署在 springboot 项目运行
java·spring boot·后端
芬加达10 小时前
leetcode34
java·数据结构·算法
__万波__11 小时前
二十三种设计模式(三)--抽象工厂模式
java·设计模式·抽象工厂模式
二川bro11 小时前
Python在AI领域应用全景:2025趋势与案例
开发语言·人工智能·python
better_liang11 小时前
每日Java面试场景题知识点之-线程池配置与优化
java·性能优化·面试题·线程池·并发编程