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

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

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

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

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

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

相关推荐
Lxinccode12 小时前
docker(25) : 银河麒麟 V10离线安装docker
java·docker·eureka·银河麒麟安装docker·银河麒麟安装compose
遇见火星12 小时前
LINUX的 jq命令行处理json字段指南
java·linux·json·jq
yi碗汤园12 小时前
【一文了解】C#反射
开发语言·unity·c#
高山上有一只小老虎12 小时前
等差数列前n项的和
java·算法
rockmelodies12 小时前
东方通安装
java
小羊失眠啦.13 小时前
用 Rust 实现高性能并发下载器:从原理到实战
开发语言·后端·rust
避避风港13 小时前
Java 抽象类
java·开发语言·python
初学小白...13 小时前
JVM入门知识点
java·服务器·jvm
cookies_s_s13 小时前
C++20 协程
linux·开发语言·c++
C++chaofan13 小时前
基于session实现短信登录
java·spring boot·redis·mybatis·拦截器·session