自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LinkedBlockingQueue源码浅析

说明 LinkedBlockingQueue是基于链表实现的,所以说它不同于ArrayBlockingQueue,它 的容量限制被写死在代码了,即int的最大值,至于其使用类似于ArrayBlockingQueue 原理说明 成员属性 从属性上看,这是个双锁控制的同步队列,不同于ArrayBlockingQueue,ArrayBlockingQueue是一把锁双条件控制,这里不难想象,它加锁...

2020-03-31 15:05:34 141

原创 ArrayBlockingQueue原理(不介绍 WeakReference 弱引用)

ArrayBlockingQueue原理 ArrayBlockingQueue有一个定长数组用来存储存放的元素,并用一个属性count记 录存储元素的个数,每当调用take这样的方法是,ArrayBlockingQueue会根据自 己当前记录的takeIndex索引值,来获取对应索引处的元素,每当取到元素则 takeIndex++,计算下次take的索引位置,知道takeIndex = 数组长度...

2020-03-04 21:14:06 173

原创 ReentrantReadWriteLock(读写可重入锁)

前言 ReentrantReadWriteLock是一种悲观的读写锁,即只有读与读这一种可以线程并行执行, 写与读,写于写都不可以并行。且在读线程很多的,锁又是非公共的情况下,很容易造成 写锁。如果采用公平锁,那么排队等待又带来了性能上的损失。 方法说明 ReentrantReadWriteLock public ReentrantReadWriteLock() 创建非公平的读写锁 public...

2020-02-26 22:41:38 227

原创 CyclicBarrier(路障)

前言 CyclicBarrier的作用让一定数目的线程一起执行 方法说明 public CyclicBarrier(int parties, Runnable barrierAction) 初始化路障,方法参数为 路障的数目 回调的接口方法 public CyclicBarrier(int parties) 初始化一定数目的路障 public int getParties() 获取路障初始化...

2020-02-25 20:45:15 251

原创 ReentrantLock显式,重入锁

方法说明 public ReentrantLock() 创建默认的非公平锁 public ReentrantLock(boolean fair) 创建可选的公平/非公平锁 true代表公平 false代表非公平 public void lock() 获取当前锁,没有获取到则排队等待,获取到则继续向下执行 public void lockInterruptibly() throws Inte...

2020-02-24 22:19:46 93

原创 Semaphore信号量浅析

方法说明 public Semaphore(int permits) public Semaphore(int permits, boolean fair) public void acquire() throws InterruptedException public void acquireUninterruptibly() public boolean tryAcquire() ...

2020-02-24 21:05:36 171

原创 CountDownLatch计数器浅析

方法简要说明 public CountDownLatch(int count) 初始化计数器,方法参数为计数器的初始值 public void await() throws InterruptedException 阻塞当前线程,直到计数器的数目减到0或者当前线程被中断 public boolean await(long timeout, TimeUnit unit) throws In...

2020-02-14 15:39:34 240

原创 ThreadLocal源码

前言 本人出于学习ReentrantReadWriteLock源码,发现ReadLock的源码中记录当前线程持有读锁的次数,是记录在ThreadLocal中,因此学习了下ThreadLocal的源码 ThreadLocal学习路线 构造方法 public ThreadLocal() { } 乍看构造方法啥都没做,其实在ThreadLocal初始化的时候做了如下: p...

2020-02-04 13:21:24 116

原创 HashMap1.7源码浅析

HashMap1.7源码浅析 1.7的HashMap是一种数组存链表的结构 put方法 public V put(K key, V value) { 判断table是否初始化了,否则初始化table if (table == EMPTY_TABLE) { inflateTable(threshold); } 判断插入的key是否是null i...

2019-11-07 20:02:30 231

原创 二进制的位运算操作

基本概念 原码: 一个10进制的数字转换为2进制的数字,最高位是符号位 反码: 在原码的基础上最高位不动,其余的1变为0,0变为1 补码: 反码加1,就是补码 正数的反码补码是一样的,计算机的计算都是使用补码来运算,计算的结果最终还需要转换为原码,计算是都要补全到32位 与(&)运算(相同位置的都是1则为1,不够补全,负数用1补全,正数用0补全) 实例1: 12 & 11 = ...

2019-10-28 00:14:47 688 2

空空如也

空空如也

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

TA关注的人

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