其实这一篇是想写jdk1.7和jdk1.8里面的concurrentHashMap的,毕竟是阿汤哥介绍的硬核方法,之前研究了一个多星期,大致的内容和难点都看懂了,但是还是有一些不满足的地方。应该是一种知识点的依赖关系的问题: 1.8里面的concurrentHashMap是依赖于LongAdder的 ...
分类:
编程语言 时间:
2019-07-29 21:43:31
阅读次数:
145
AQS 关于CLH大量使用到的Unsafe的CAS用法,头两个入参是this和xxOffset,翻了一下牛逼网友的给的代码大概是处理一个内存对齐的问题,整个操作中涉及到offset(dest)有两个部分 Unsafe不面向普通开发者,上来就检查你的类加载器是不是null(native) 先mark一 ...
分类:
其他好文 时间:
2019-07-28 10:59:29
阅读次数:
111
一,AQS原理 lock最常用的类就是ReentrantLock,其底层实现使用的是AbstractQueuedSynchronizer(AQS) 简单来说AQS会把所有的请求线程构成一个CLH队列,当一个线程执行完毕(lock.unlock())时会激活自己的后继节点,但正在执行的线程并不在队列中 ...
分类:
其他好文 时间:
2019-07-27 11:16:42
阅读次数:
129
在翻阅AQS(AbstractQueuedSynchronizer)类的过程中,发现其进行原子操作的时候采用的是CAS。涉及的代码如下: 1: private static final Unsafe unsafe = Unsafe.getUnsafe(); 2: private static fin... ...
分类:
其他好文 时间:
2019-07-26 19:56:06
阅读次数:
843
锁是最常用的同步方法之一,在高并发的环境下激烈的锁竞争会导致程序的性能下降,所以我们自然有必要深入的学习一下锁的相关知识。 java的内置锁一直都是备受争议的,在JDK 1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略,如自适应自旋,锁消除 ...
分类:
其他好文 时间:
2019-07-26 16:08:53
阅读次数:
114
MTW881U3Z5-eyJsaWNlbnNlSWQiOiJNVFc4ODFVM1o1IiwibGljZW5zZWVOYW1lIjoiTnNzIEltIiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGl ...
分类:
其他好文 时间:
2019-07-19 13:58:37
阅读次数:
114
AbstractQueuedSynchronize 抽象队列同步器 类: 简介: -提供了一个框架来实现阻塞锁和依赖先进先出(FIFO:first-in-first-out)等待对列的相关同步器(信号量、事件等) 此类被设计为对大多数依赖单原子 int 值来表示状态的同步器来说非常有用,子类必须定义 ...
分类:
其他好文 时间:
2019-07-15 23:56:51
阅读次数:
211
AbstractOwnableSynchronize 抽象独占同步器 ...
分类:
其他好文 时间:
2019-07-15 22:36:29
阅读次数:
111
模板方法模式的定义如下:一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。也可以这样描述:定义一个操作中算法的骨架,而将一些步骤的实现延迟到子类中。 其实简单的来说就是当多个子类存在公共的行为时,可以将其提取出来并集中到一个公共父类中,但是子类 ...
分类:
其他好文 时间:
2019-07-11 12:55:49
阅读次数:
136
一 . 简介AQS AQS简介 在同步组件的实现中,AQS是核心部分,同步组件的实现者,通过使用AQS提供的 模板方法 实现同步组件语义<! more AQS实现了 对同步状态的管理 以及 阻塞线程进行排队 , 等待通知 等等一系列底层的实现处理 AQS核心: 使用Node实现同步队列,底层是个双向 ...
分类:
编程语言 时间:
2019-07-08 13:54:58
阅读次数:
101