自定义博客皮肤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 103

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

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

2020-03-04 21:14:06 139

原创 ReentrantReadWriteLock(读写可重入锁)

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

2020-02-26 22:41:38 174

原创 CyclicBarrier(路障)

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

2020-02-25 20:45:15 194

原创 ReentrantLock显式,重入锁

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

2020-02-24 22:19:46 56

原创 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 111

原创 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 197

原创 ThreadLocal源码

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

2020-02-04 13:21:24 79

原创 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 170

原创 二进制的位运算操作

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

2019-10-28 00:14:47 512

空空如也

空空如也

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

TA关注的人

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