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

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

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

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

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

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

相关推荐
Fnetlink118 分钟前
Fnet 云网安 261023
运维·开发语言·网络·人工智能·安全·web安全·php
泡茶喝茶写代码23 分钟前
A股量化策略回测实战:从行情数据到绩效评估(第 13 篇):放量突破策略
java·python·股票数据api·股票数据api接口·股票量化数据api·股票量化数据接口
文丑颜不良啊27 分钟前
LeetCode626~650题目解析
java·leetcode
ESDWAN29 分钟前
SD-WAN 主备切换为什么仍会断网?从检测、切换到会话恢复分析
运维·开发语言·网络·php
jimy132 分钟前
lvalue、xvalue、prvalue(二):引用是哪一类?
开发语言·c++·1024程序员节
cxyxixiy35 分钟前
数智码力:数据核对不用人工比对,Python 快速完成多表格差异校验
开发语言·python·学习
一个风轻云淡39 分钟前
从 int $0x80 到 iret:用 gdb 把 getpid 走一遍
linux·c语言·开发语言·汇编
杜 硕43 分钟前
从零开始的C++生活——第三讲
开发语言·c++·生活
tianbin9111 小时前
批处理与微调辅助场景:Claude 中转并发、链路缓存与压测对比
java·开发语言·缓存
frjc1 小时前
Spring AI 里 ChatClient 和 ChatModel 有什么区别?什么时候该用哪个?
java·开发语言·spring·ai