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

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

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

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

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

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

相关推荐
计算机毕设指导67 分钟前
基于微信小程序的丽江市旅游分享系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·旅游
毕设源码-郭学长8 分钟前
【开题答辩全过程】以 基于python电商商城系统为例,包含答辩的问题和答案
开发语言·python
散峰而望11 分钟前
【算法竞赛】栈和 stack
开发语言·数据结构·c++·算法·leetcode·github·推荐算法
Mr -老鬼12 分钟前
Rust 的优雅和其他语言的不同之处
java·开发语言·rust
网安CILLE13 分钟前
PHP四大输出语句
linux·开发语言·python·web安全·网络安全·系统安全·php
weixin_5316518115 分钟前
Rust 的所有权机制
java·开发语言·rust
江公望19 分钟前
QT/QML qmlRegisterType()函数浅谈
开发语言·qt
foundbug99921 分钟前
MATLAB中实现信号迭代解卷积功能
开发语言·深度学习·matlab
Seven9727 分钟前
SPI机制:服务扩展的核心技术
java