自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 收藏
  • 关注

原创 对着源码一步步分解AQS

对着源码来一步步分析AQS的实现逻辑,AQS->AbstractQueuedSynchronizer,看名字 抽象队列同步器,首先得有队列。 先来看队列节点类,Node: static final class Node { static final Node SHARED = new Node(); //共享模式标记 static final Node EXCLUSIVE = null;//独占模式标记 static

2020-12-04 12:59:44 130

原创 JDK8---UnSafe类实现CAS乐观锁

CAS:CompareAndSwap(比较并交换),简单点说,内存地址V,旧值为A,当要修改为新值B的时候,先判断V当前的值是不是A,如果是,则将V的值修改为B,否则失败。 那么JDK8中是怎么实现的呢?(ConCurrentHashMap、Atomic、AQS等常见并发类的底层实现都有它) 在sun.misc包下有一个 UnSafe类(在rt.jar包下面): public final class Unsafe { private Unsafe() {//静态构造方法 } public

2020-12-04 12:47:48 227

原创 看一看1.8的HashMap---插入、查找

再看之前,需要先理解位移 先看位移运算,按照我们的日常使用-从new开始,来一步步分析源代码。(核心源码每一步都有注释) 第一步:Hash构造函数 主要两类;第一类,不指定初始化容量 public HashMap() { this.loadFactor = 0.75F; } 第二类,指定初始容量和负载因子 public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity < 0)

2020-12-04 12:41:33 196

原创 先看位移运算

初识: <<(左移)、>>(带符号右移)和>>>(无符号右移) (符号: 最高位 0 正数,1负数)。注意当刚好为数据长度的整数倍时,即32、64······,数据保持原来不变;其他情况下移动除以 32 余数的长度。 <<:例如 5<<1 -> 二进制为 0101 整体左移一位,缺的以0补足,变成 101 0 = 10 相当于 5 * 2 = 10。 >>:例如 10>>1 ->二进制为 1010 整体

2020-12-04 12:29:54 107

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除