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

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

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

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

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

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

相关推荐
gugucoding1 分钟前
2. 【Java】搭建Java开发环境
java·开发语言
多加点辣也没关系1 分钟前
JavaScript|第9章:对象 — 基础
开发语言·javascript·ecmascript
2601_949818098 分钟前
Vector从入门到应用(C++ STL动态数组万字全解
开发语言·c++
wang090725 分钟前
自己动手写一个spring之MVC_3
java·spring·mvc
闲猫36 分钟前
Spring AI / Models / Chat Models / Ollama
java·人工智能·spring
汤米粥1 小时前
Python爬虫中Xpath用法之——normalize-space()
开发语言·python
FREEDOM_X1 小时前
Linux 多线程编程——总结
java·linux·运维·ubuntu
科技道人1 小时前
记录 设置-显示大小和字体
开发语言·android设置·字体和显示大小
tmlx3I0811 小时前
Tomcat的架构设计和启动过程详解
java·tomcat
浮江雾1 小时前
Flutter第三节----Dart中的数据类型
android·开发语言·学习·flutter·入门·函数