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

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

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

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

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

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

相关推荐
无限进步_几秒前
C++异常机制:抛出、捕获与栈展开
开发语言·c++·安全
小白学大数据5 分钟前
深度探索:Python 爬虫实现豆瓣音乐全站采集
开发语言·爬虫·python·数据分析
Xin_ye100867 分钟前
C# 零基础到精通教程 - 第八章:面向对象编程(进阶)——继承与多态
开发语言·c#
m0_7488394913 分钟前
R包grafify:简单操作实现高效统计绘图
开发语言·r语言
BIG_PEI14 分钟前
检查并安装Redis
java
大貔貅喝啤酒16 分钟前
基于Windows下载安装Android Studio 3.3.2版本教程(2026详细图文版)
android·java·windows·android studio
Evand J16 分钟前
【课题推荐与代码介绍】卡尔曼滤波器正反向估计算法原理与MATLAB实现
开发语言·算法·matlab
奋斗的小方18 分钟前
Java基础篇09:项目实战
java·开发语言
海兰19 分钟前
【第21篇-续】graph-Stream-Node改造为适配openAI模型示例
java·人工智能·spring boot·spring·spring ai
vKd0Ff21L21 分钟前
如何在Dev-C++中设置TDM-GCC为默认编译器第九十一篇
java·jvm·c++