Semaphore信号量源码解析

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

2018-08-18 22:39:37

阅读数 136

评论数 0

CyclicBarrier源码分析

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

2018-08-18 22:38:59

阅读数 41

评论数 0

基于CountDownLatch讲AQS之共享锁

一、用法 先看CountDownLatch的用处和用法 每个线程如果持有同一个CountDownLatch,当他们都调用countdownLatch的await()方法的时候,他们都会被挂起,只有当countdownLatch的数量减到0的时候,他们才会同时开始执行(这里CycliBarrie...

2018-08-18 21:52:58

阅读数 686

评论数 0

从ReentrantLock讲AQS的Condition

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

2018-08-17 17:06:03

阅读数 79

评论数 0

从ReentrantLock的lock unlock讲AQS的独占锁

一、用法 首先看ReetrantLock的用法。 private ReentrantLock lock = new ReentrantLock(); lock.lock() try{ 操作 }catch(){} finally{ lock.unlock(); } 我们在需要加锁...

2018-08-17 17:04:36

阅读数 508

评论数 2

ReentrantLock可重入锁

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

2017-09-11 21:39:51

阅读数 68

评论数 0

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