3 小学生写日记

尚未进行身份认证

暂无相关描述

等级
TA的排名 172w+

Semaphore信号量源码解析

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

2018-08-18 22:39:37

CyclicBarrier源码分析

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

2018-08-18 22:38:59

基于CountDownLatch讲AQS之共享锁

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

2018-08-18 21:52:58

从ReentrantLock讲AQS的Condition

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

2018-08-17 17:06:03

从ReentrantLock的lock unlock讲AQS的独占锁

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

2018-08-17 17:04:36

ReentrantLock可重入锁

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

2017-09-11 21:39:51
勋章 我的勋章
    暂无奖章