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

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

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

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

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

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

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