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

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

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

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

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

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

相关推荐
不穿铠甲的穿山甲10 分钟前
gradle-tasks.register(‘classesJar‘, Jar)解析
android·java·gradle·groovy
刚入门的大一新生12 分钟前
C++初阶-模板初阶
开发语言·数据结构·c++
学了就忘22 分钟前
Axios 传参与 Spring Boot 接收参数完全指南
java·spring boot·后端·vue
漂流瓶66666630 分钟前
如何在idea中写spark程序
java·spark·intellij-idea
冼紫菜32 分钟前
[特殊字符] SpringCloud项目中使用OpenFeign进行微服务远程调用详解(含连接池与日志配置)
java·后端·spring cloud
oioihoii38 分钟前
C++23文本编码革新:迈向更现代的字符处理
java·数据库·c++23
Dxy123931021644 分钟前
Python对字典列表按某个字段排序
开发语言·python
.hopeful.44 分钟前
基于QT的仿QQ音乐播放器
开发语言·c++·qt
Seven971 小时前
记录一次线上问题排查:JDK序列化问题
java
风象南1 小时前
SpringBoot中4种登录验证码实现方案
java·spring boot·后端