并发
深海探秘
java小白到java大神的成长路线,包含成长路上的一些经验教训,一起成长。
展开
-
ReentrantLock 源码分析
前沿 前面几篇文章已经向大家详细介绍了AQS,今天我们来看一下ReentrantLock。其实当你明白AQS的原理的时候,在来看ReentrantLock,你会发现很简单。因为ReentrantLock其实就是基于AQS来实现的,下面我们来详细学习ReentrantLock。ReentrantLock特性ReentrantLock是一把重入锁,可中断,可以限时,支持公平锁和非公平...原创 2020-03-19 22:32:24 · 147 阅读 · 0 评论 -
AQS共享锁与独占锁对比
AQS框架图上图是AQS框架大致的一些方法,还有一些没有全部的列出来。这里主要是让大家从这张图中,对AQS有一个总体的印象。总的来说AQS框架分为五层从对外暴露的API层到底层的数据层,当自定义同步器时候,只需要实现API的方法即可,不需要关注底层的具体实现逻辑。共享模式和独占模式流程图对比独占模式流程图共享模式流程图相同点从流程图中,我们发现独占模式和共...原创 2020-03-05 23:23:28 · 4761 阅读 · 2 评论 -
AQS 共享锁模式
前沿上一篇文章已经向大家讲解了AQS的数据结构,以及独占锁的源码详解,本篇文章接着介绍AQS的共享锁模式,学习并发编程一定要把AQS搞懂,因为JUC包中的很多类都是由AQS实现的。AQS共享模式acquireShared执行流程多个线程通过调用tryAcquireShared方法获取共享资源,返回值大于等于0则获取资源成功,返回值小于0则获取失败。 当前线程获取共享资源失败后,通过调...原创 2020-02-28 22:45:27 · 270 阅读 · 0 评论 -
AQS详解之独占锁模式
AQS 介绍AbstractQueuedSynchronizer简称AQS,即队列同步器。它是JUC包下面的核心组件,它的主要使用方式是继承,子类通过继承AQS,并实现它的抽象方法来管理同步状态,它分为独占锁和共享锁。很多同步组件都是基于它来实现的,比如我门常见的ReentrantLock,它是基于AQS的独占锁实现的,它表示每次只能有一个线程持有锁。在比如ReentrantReadWrite...原创 2020-02-03 11:31:41 · 196 阅读 · 0 评论