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

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

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

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

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

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

相关推荐
木井巳13 小时前
【递归算法】快速幂解决 pow(x,n)
java·算法·leetcode·深度优先
程序员_大白13 小时前
区块链部署与运维,零基础入门到精通,收藏这篇就够了
运维·c语言·开发语言·区块链
qq_2290580113 小时前
python-Dgango项目收集静态文件、构建前端、安装依赖
开发语言·python
测试人社区—667913 小时前
2025区块链分层防御指南:AI驱动的安全测试实战策略
开发语言·驱动开发·python·appium·pytest
风景的人生13 小时前
mybatis映射时候的注意点
java·mybatis
m0_7482486513 小时前
C++使用HTTP库和框架轻松发送HTTP请求
开发语言·c++·http
墨夶13 小时前
Java冷热钱包:不是所有钱包都叫“双保险“!用户资产安全的终极守护者
java·安全·区块链
Yorlen_Zhang14 小时前
Python @property 装饰器详解:优雅控制属性访问的魔法
开发语言·python
朔北之忘 Clancy14 小时前
2025 年 12 月青少年软编等考 C 语言二级真题解析
c语言·开发语言·c++·学习·算法·青少年编程·题解
2301_7903009614 小时前
C++与增强现实开发
开发语言·c++·算法