摘要:一、AQS-条件变量的支持(二) 在如下代码中,当另外一个线程调用条件变量的signal方法的时候(必须先调用锁的lock方法获取锁),在内部会把条件队列里面队头的一个线程节点从条件队列里面移除并且放入AQS的阻塞队列里面,然后激活这个线程。 public final void signal() { 阅读全文
摘要:一、编写评论页面 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>D38_1_Review</title> <style> *{ margin:0; padding:0; list-style:none; } # 阅读全文
摘要:一、入队操作 当一个线程获取锁失败之后会被转换为Node节点,然后会使用enq方法,将该节点插入到AQS的阻塞队列,下面看一下这个方法如何实现 private Node enq(final Node node) { for(;;) { Node t = tail; if( t == null) { 阅读全文
摘要:一、AQS--锁的底层支持 1.AQS是什么 AQS是AbstractQueuedSychronizer的简称,即抽象同步队列的简称,这是实现同步器的重要组件,是一个抽象类,虽然在实际工作中很烧用到它,但是了解它的内部原理是很有必要的,并法包中锁的底层就是使用该抽象类实现的,下面类图 2.分析AQS 阅读全文
摘要:一、例子 下面来一个例子加深对park和unpark的理解 package com.ruigege.LockSourceAnalysis6;import java.util.concurrent.locks.LockSupport;public class TestParkAndUnpark { p 阅读全文
摘要:一、LockSupport工具类 1.该类的主要作用 挂起和唤醒线程,该工具类是创建锁和其他同步类的基础。LockSupport类与每个使用它的线程都会关联一个许可证,默认情况下调用LockSupport类的方法的线程是不持有许可证的。LockSupport使用Unsafe类进行实现的。 2.voi 阅读全文
摘要:一、CopyOnWriteArrayList 概览:该List是一个JUC包中的唯一并发List,它是线程安全的,底层是一个数组,我们所有的操作都是使用了写时复制的策略,下面这张图片就是该类的一个类图 1.类图基本解释 有一个独占锁ReentrantLock用于锁定线程,同一时间只能由一个线程进行修 阅读全文
摘要:一、LongAccumulator类 1.和LongAdder之间的关系 LongAdder类是LongAccumulator的一个特例,我们看一下LongAccumulator的一个构造方法 public LongAccumlator(LongBinaryOperator accumulatorF 阅读全文
摘要:一、复习 上次连载简单的介绍了其他函数的作用以及功能 二、完整的LongAdder类源码 package com.ruigege.AtomicOperationClass4;import java.util.function.LongBinaryOperator;import sun.misc.Un 阅读全文
摘要:一、复习 AtomicLong类 二、LongAdder源码分析 1.继承与实现关系 LongAdder类继承自Striped64这个类,同时实现了Serializable接口 abtract class Strped64{ transient volatile Cell[] cells; tran 阅读全文