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

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

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

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

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

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

相关推荐
thefool1122664 小时前
Java 数组是引用类型
java
geovindu4 小时前
CSharp: Bridge Pattern
开发语言·后端·桥接模式·结构型模式
এ慕ོ冬℘゜5 小时前
深入 JavaScript BOM:掌握 window 对象的窗口控制魔法
开发语言·javascript·ecmascript
2501_941982055 小时前
企业微信二次开发:如何用 Python 搭建通用的 Webhook 实时消息接收
开发语言·python·企业微信
cfm_29145 小时前
Spring监听器
java·spring boot·后端
逝水无殇5 小时前
C# 特性详解
开发语言·后端·c#
SamDeepThinking5 小时前
Java面向对象在JVM里怎么实现
java·后端·面试
灵晔君6 小时前
【C++】二叉搜索树
开发语言·c++
LongtengGensSupreme6 小时前
C#图像内存高速拷贝:使用Marshal.AllocHGlobal与ArrayPool实现内存拷贝的几个方法
开发语言·数码相机·c#
Java面试题总结6 小时前
Python,单引号和双引号有何区别
开发语言·python