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

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

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

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

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

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

相关推荐
拽着尾巴的鱼儿17 小时前
Java 对象的深拷贝和浅拷贝
java·开发语言
fie888917 小时前
matlab打靶法求解两点边值优化问题
开发语言·算法·matlab
skywalk816317 小时前
请结合以下说明,先完成类似python的内置函数。 然后再去完成内置库(标准款) ‌内置函数‌
开发语言·python
我不是懒洋洋17 小时前
手写一个异步日志库:从printf到高性能无锁日志
java·c语言·开发语言·c++·visual studio
郝学胜-神的一滴17 小时前
Python 高级编程 018:深挖 super
开发语言·python·程序人生·软件构建
hoiii18717 小时前
基于MATLAB实现Lamb波频散曲线求解
开发语言·matlab
李少兄17 小时前
Java 工程化基石:标准目录结构与 META-INF 元信息机制
java·开发语言
就叫_这个吧17 小时前
理解Java反射机制和内省机制应用与实践
java·开发语言·反射
未若君雅裁18 小时前
synchronized 底层原理:Monitor、对象头、Mark Word 与锁升级
java
尤老师FPGA18 小时前
QT代码自适应窗口
开发语言·qt