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

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

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

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

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

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

相关推荐
Carsene4 分钟前
开篇:我们距离理想的 Java SQL DSL 还有多远?
java·sql
敖正炀5 分钟前
集合-List-LinkedList
java
AI人工智能+电脑小能手5 分钟前
【大白话说Java面试题】【Java基础篇】第9题:HashMap根据key查询元素的时间复杂度是多少
java·开发语言·数据结构·后端·面试·哈希算法·哈希表
invicinble9 分钟前
对于java面向对象的知识
java·开发语言
2501_930707789 分钟前
使用C#代码在 PowerPoint 中创建组合图表
开发语言·c#·powerpoint
干洋芋果果11 分钟前
前端学python
开发语言·前端·python
铭彩色11 分钟前
refresh token(保证access token获取及用户安全)
java·安全
FOREVER-Q12 分钟前
基于 Vite 的前端 SDK 工程化设计与模块化构建实践
开发语言·前端·javascript
2501_9130613412 分钟前
网络原理知识(6)
java·网络·网络协议·面试
invicinble13 分钟前
java面向对象的学习主线
java·开发语言·学习