天道酬勤,学无止境

Generation

阿里一面:CyclicBarrier和CountDownLatch的区别?

引言 前面一篇文章我们《Java高并发编程基础三大利器之CountDownLatch》它有一个缺点,就是它的计数器只能够使用一次,也就是说当计数器(state)减到为 0的时候,如果 再有线程调用去 await() 方法,该线程会直接通过,不会再起到等待其他线程执行结果起到同步的作用。为了解决这个问题CyclicBarrier就应运而生了。 什么是CyclicBarrier CyclicBarrier是什么?把它拆开来翻译就是循环(Cycle)和屏障(Barrier)它的主要作用其实和CountDownLanch差不多,都是让一组线程到达一个屏障时被阻塞,直到最后一个线程到达屏障时,屏障会被打开,所有被屏障阻塞的线程才会继续执行,不过它是可以循环执行的,这是它与CountDownLanch最大的不同。CountDownLanch是只有当最后一个线程把计数器置为0的时候,其他阻塞的线程才会继续执行。学习CyclicBarrier之前建议先去看看这几篇文章: 《Java高并发编程基础之AQS》 《Java高并发编程基础三大利器之Semaphore》 《Java高并发编程基础三大利器之CountDownLatch》 如何使用 我们首先先来看下关于使用CyclicBarrier的一个demo:比如游戏中有个关卡的时候,每次进入下一关的时候都需要进行加载一些地图

2021-03-27 01:25:40    分类:博客    CyclicBarrier   BrokenBarrierExcept   Generation

阿里一面:CyclicBarrier和CountDownLatch的区别?

引言 前面一篇文章我们《Java高并发编程基础三大利器之CountDownLatch》它有一个缺点,就是它的计数器只能够使用一次,也就是说当计数器(state)减到为 0的时候,如果 再有线程调用去 await() 方法,该线程会直接通过,不会再起到等待其他线程执行结果起到同步的作用。为了解决这个问题CyclicBarrier就应运而生了。 什么是CyclicBarrier CyclicBarrier是什么?把它拆开来翻译就是循环(Cycle)和屏障(Barrier)它的主要作用其实和CountDownLanch差不多,都是让一组线程到达一个屏障时被阻塞,直到最后一个线程到达屏障时,屏障会被打开,所有被屏障阻塞的线程才会继续执行,不过它是可以循环执行的,这是它与CountDownLanch最大的不同。CountDownLanch是只有当最后一个线程把计数器置为0的时候,其他阻塞的线程才会继续执行。学习CyclicBarrier之前建议先去看看这几篇文章: 《Java高并发编程基础之AQS》 《Java高并发编程基础三大利器之Semaphore》 《Java高并发编程基础三大利器之CountDownLatch》 如何使用 我们首先先来看下关于使用CyclicBarrier的一个demo:比如游戏中有个关卡的时候,每次进入下一关的时候都需要进行加载一些地图

2021-03-27 01:25:36    分类:博客    CyclicBarrier   BrokenBarrierExcept   Generation