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

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

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

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

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

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

相关推荐
不会C语言的男孩几秒前
C++ Primer 第18章:用于大型程序的工具
开发语言·c++
摇滚侠3 分钟前
Spring 零基础入门到进阶 入门 06-10
java·spring·intellij-idea
要开心吖ZSH6 分钟前
AI医疗分诊与健康咨询助手agent开发——(1)从零搭建SpringBoot与AI对话系统:后端骨架 + 前端对话页 + SSE流式输出
java·ai·agent·健康医疗
星恒随风7 分钟前
C++ 类和对象入门(三):拷贝构造、赋值运算符重载和深浅拷贝
开发语言·c++·笔记·学习
RickyWasYoung8 分钟前
【Matlab】科研绘图配色-极简版
开发语言·matlab
biubiubiu07068 分钟前
SpringBoot生产级日志配置
java·spring boot·后端
凡人叶枫9 分钟前
Effective C++ 条款03:尽可能使用 const
linux·开发语言·c++·嵌入式开发
光影62715 分钟前
Python接口自动化测试----Requests库基础入门
开发语言·python·测试工具·pycharm·自动化
程序媛_15 分钟前
【Python】连接PostgreSQL获取手机验证码
开发语言·python·postgresql
ch.ju17 分钟前
Java Programming Chapter 4——Inherited call
java·开发语言