失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > JDK内置并发AQS同步器的独占锁获取与释放

JDK内置并发AQS同步器的独占锁获取与释放

时间:2019-09-08 08:12:06

相关推荐

JDK内置并发AQS同步器的独占锁获取与释放

作者简介:笔名seaboat,擅长工程算法、人工智能算法、自然语言处理、计算机视觉、架构、分布式、高并发、大数据和搜索引擎等方面的技术,大多数编程语言都会使用,但更擅长Java、Python和C++。平时喜欢看书写作、运动、画画。崇尚技术自由,崇尚思想自由。出版书籍:《Tomcat内核设计剖析》、《图解数据结构与算法》、《图解Java并发原理》、《人工智能原理科普》。

前言

前面我们介绍过JDK内置AQS同步器的相关内容,包括它的内部结构、性质及思想等等。详细分析了锁的获取与释放的逻辑、等待队列的管理、同步状态的管理、锁获取操作的中断支持、锁获取操作的超时与取消。其中各类操作处理逻辑主要使用了伪代码进行说明,接着的两篇文章将以代码的角度完整地分析AQS同步器,即java.util.concurrent.locks.AbstractQueuedSynchronizer类,为了更方便清晰讲解代码,这里会将非核心代码剔除且合并某些方法,我们主要是理解核心逻辑。

由于文章太长,考虑到阅读体验,将其分为3~4篇。这是第二篇。

一些辅助方法

在分析核心方法之前我们先看一些辅助方法,因为核心方法会调用它们。getState方法和setState方法用于读写同步状态state,需要注意这里额外提供了compareAndSetState方法,它用于通过CAS方式修改state。compareAndSetTail方法提供CAS方式修改队列尾tail,setHead方法设置队列头,parkAndCheckInterrupt方法使当前线程进入等待状态,当它被唤醒后会判断当前线程是否被中断且清理中断标识。

如果觉得《JDK内置并发AQS同步器的独占锁获取与释放》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。