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

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

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

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

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

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

相关推荐
珍珠先生5 分钟前
第14章 设计模式入门:单例、工厂、建造者与代理
java
JavaEdge.9 分钟前
scoped 样式与 data-v-* 属性选择器(写给 Javaer)
开发语言·vue
坐吃山猪12 分钟前
JDK 8 到 JDK 21 新特性知识要点
java·开发语言·windows
坐吃山猪14 分钟前
【多线程】FutureTask多线程底层实现
java·开发语言·数据库
XR12345678818 分钟前
办公组网像“看病“:先问诊,再选型
开发语言·php
weixin1997010801618 分钟前
[特殊字符]《从0到1:闲鱼开放平台授权登录 + AccessToken 刷新 + 聚石塔部署完整链路》(附Python源码)
java·数据库·python
布莱克60519 分钟前
strcpy 函数详解:作用、用法与安全缺陷
c语言·开发语言·c++·安全
软件黑马王子28 分钟前
3.单例模式问题1:构造函数
开发语言·单例模式·c#
Freak嵌入式35 分钟前
RP2040 PIO 编程模型与状态机原理:从硬件架构到工作逻辑全解析
java·大数据·开发语言·单片机·嵌入式硬件·硬件架构
kakawzw42 分钟前
Netty源码笔记
java·服务器·后端