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

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

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

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

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

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

相关推荐
2301_7890156216 小时前
算法与数据结构——排序算法大全
c语言·开发语言·数据结构·c++·算法·排序算法·visual studio
学习编程的Kitty16 小时前
JavaEE初阶——多线程(1)初识线程与创建线程
java·开发语言·java-ee
勤奋菲菲17 小时前
Egg.js 完全指南:企业级 Node.js 应用框架
开发语言·javascript·node.js
长安城没有风17 小时前
从入门到精通【Redis】初识Redis哨兵机制(Sentinel)
java·数据库·redis·后端
蒂法就是我17 小时前
java集合类的底层类是哪个
java·开发语言
Hoking17 小时前
LangChain4j集成SpringBoot接入百炼大模型(Qwen)
java·人工智能·spring boot·llm
浪里小白龙5918 小时前
零信任平台接入芋道框架
java
代码匠心18 小时前
从零开始学Flink:流批一体的执行模式
java·大数据·后端·flink·大数据处理
一只程序烽.18 小时前
java项目使用宝塔面板部署服务器nginx不能反向代理找到图片资源
java·服务器·nginx
小黄人软件18 小时前
用AI写的【实时文件搜索引擎】python源码【找资源】
开发语言·python·搜索引擎