parkAndCheckInterrupt
使用LockSupport.park挂起当前线程编程WATING状态
Thread.interrupted,返回当前线程是否被其他线程触发过中断请求,也就是thread.interrupt(); 如果有触发过中断请求,那么这个方法会返回当前的中断标识true,并且对中断标识进行复位标识已经响应过了中断请求。如果返回true,意味着在acquire方法中会执行selfInterrupt()。
private final boolean parkAndCheckInterrupt() { LockSupport.park(this); return Thread.interrupted();
}
selfInterrupt: 标识如果当前线程在acquireQueued中被中断过,则需要产生一个中断请求,原因是线程在调用acquireQueued方法的时候是不会响应中断请求的
static void selfInterrupt() { Thread.currentThread().interrupt();
}
图解分析
通过acquireQueued方法来竞争锁,如果ThreadA还在执行中没有释放锁的话,意味着ThreadB和ThreadC只能挂起了。
parkAndCheckInterrupt相关推荐
- 转:AbstractQueuedSynchronizer的介绍和原理分析
引自:http://ifeve.com/introduce-abstractqueuedsynchronizer/ 简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架.该同 ...
- java aqs源码_Java-AQS源码详解(细节很多!)
ReentrantLock调用lock()时时序图: addWaiter方法: enq方法:自旋 它维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用 ...
- 用“逐步排除”的方法定位Java服务线上“系统性”故障
说明:原文地址已经不可访问,其他地方有转载,不过很多丢失图片,所以,找到一处有图的重新配好图. 用"逐步排除"的方法定位Java服务线上"系统性"故障 Post ...
- ReentrantLock实现原理分析
ReentrantLock主要利用CAS+CLH队列来实现.它支持公平锁和非公平锁,两者的实现类似. CAS:Compare and Swap,比较并交换.CAS有3个操作数:内存值V.预期值A.要修 ...
- 分布式环境下,互斥性与幂等性问题,分析与解决思路
欢迎关注方志朋的博客,回复"666"获面试宝典 随着互联网信息技术的飞速发展,数据量不断增大,业务逻辑也日趋复杂,对系统的高并发访问.海量数据处理的场景也越来越多.如何用较低成本实 ...
- 突然就懵了!面试官问我:线程池中多余的线程是如何回收的?
点击关注公众号,Java干货及时送达 最近阅读了JDK线程池ThreadPoolExecutor的源码,对线程池执行任务的流程有了大体了解,实际上这个流程也十分通俗易懂,就不再赘述了,别人写的比我好多 ...
- 一文搞懂 CountDownLatch 用法和源码!
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! CountDownLatch 是多线程控制的一种工具,它被 ...
- 分布式系统互斥性与幂等性问题的分析与解决
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:zdy0_2004 blog.csdn.net/zdy0_2 ...
- JUC AQS ReentrantLock源码分析
Java的内置锁一直都是备受争议的,在JDK 1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略,但是与Lock相比synchronized还 ...
最新文章
- 字符串string类的使用:回文
- 时间序列数据库——索引用ES、聚合分析时加载数据用什么?docvalues的列存储貌似更优优势一些...
- linux课堂笔记(3)
- 计算机课程学习小结,计算机课程学习心得5篇___.docx
- 具有多个Join和选定列的示例LINQ
- oracle的sga怎么设置,oracle sga设置
- POJ2155 Matrix 二维线段树
- ​让AI触类旁通93种语言:Facebook最新多语种句嵌入来了
- Perl 简单读写XML 文件
- 一步到位,用SQL检索ElasticSearch
- iOS开发之企业级账号的使用注意的坑
- python工作流界面_python 版工作流设计
- css背景和边框标签总结
- 谷歌浏览器插件离线安装
- VBA字典对象操作技巧
- 【历史上的今天】1 月 19 日:苹果推出 Lisa;RIM 发布第一款黑莓手机;计算机先驱诞生日
- php euc-cn,php配置中文解说
- ecshop修改模板可输出php代码,修改ecshop模板体会
- vue 环信im 接收语音
- Android小红书发帖api接口,小红书Android客户端演进之路