自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Semaphore信号量源码解析

一、用法信号量,Semaphore可以控同时访问的线程个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。 二、源码: 构造方法,设置可以同时运行的线程数量。这里可以设置是公平的,还是非公平的。这里先说非公平的。 acqurie()本质是AQS的方法,这个方法的本质就是看业务线的try的方法是否返回值小...

2018-08-18 22:39:37 481

原创 CyclicBarrier源码分析

字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier可以被重用。我们暂且把这个状态就叫做barrier,当调用await()方法之后,线程就处于barrier了。其实它和countDownLatch很类似,也是个计数器。但他有两个优点:1.一个他的计数器能复用,而countDownLatch减到...

2018-08-18 22:38:59 138

原创 基于CountDownLatch讲AQS之共享锁

一、用法先看CountDownLatch的用处和用法每个线程如果持有同一个CountDownLatch,当他们都调用countdownLatch的await()方法的时候,他们都会被挂起,只有当countdownLatch的数量减到0的时候,他们才会同时开始执行(这里CycliBarrier也可以做的)。也可以用它来控制线程的同时执行。如果把countDown放在run方法里,也可以做到等...

2018-08-18 21:52:58 1215

原创 从ReentrantLock讲AQS的Condition

一、用法下面我们从ReentrantLock切入,讲AQS提供的Conditon一系列方法。先看用法。private ReentrantLock lock = new ReentrantLock();private Condition condition=lock.newConditon();lock.lock()try{操作condition.await();//...

2018-08-17 17:06:03 290

原创 从ReentrantLock的lock unlock讲AQS的独占锁

一、用法首先看ReetrantLock的用法。private ReentrantLock lock = new ReentrantLock();lock.lock()try{操作}catch(){}finally{lock.unlock();}我们在需要加锁的操作前面使用lock()方法,然后进行操作,在fianlly里面释放锁。那么lock,unlock里...

2018-08-17 17:04:36 1095 2

原创 ReentrantLock可重入锁

什么是可重入性:线程可以进入任何一个他已经拥有锁的对象所锁住的代码块。

2017-09-11 21:39:51 165

空空如也

空空如也

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

TA关注的人

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