![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC
不将就不念旧
错过的就错过了。
展开
-
leetCode网多线程题目之交替打印FooBar
leetCode网多线程题目之交替打印FooBar。采用信号量的方式来解决此问题,网上还有使用Lock + volatile + Condition的方式实现。题目链接:https://leetcode-cn.com/problems/print-foobar-alternately/题目原文:我们提供一个类:class FooBar { public void foo() { ...原创 2020-01-02 09:36:49 · 249 阅读 · 0 评论 -
CyclicBarrier源码解析
CyclicBarrier也被称之为循环栅栏,是JUC中提供的一个同步工具类,用于解决某些需要指定现场到达某个屏障点才能继续执行后续操作的场景。一个简单的demo示例。声明一个等待线程为5的栅栏,声明8个线程去执行,当第5个线程到达栅栏时,将会唤醒前4个等待的线程,这5个线程将执行自己的任务。CyclicBarrier将会开启下一代(新栅栏),剩余三个线程将会在新栅栏处等待,直到第5个线程到达将...原创 2019-12-17 13:37:30 · 373 阅读 · 0 评论 -
CountDownLatch源码解析
一、概念CountDownLatch可以使一个线程等待指定数量的其他线程都执行完毕后再执行。CountDownLatch 是基于共享锁实现的,初始的时候声明一个state数量的同步器,这个state可以理解为拥有锁的线程数量,当调用await()方法时,当前线程会去尝试获取共享锁,只有当state值为0时才能获取锁成功,否则会阻塞,才能继续执行下面代码。通俗理解,声明一个指定线程数量的计数...原创 2019-12-16 16:20:34 · 376 阅读 · 0 评论 -
JUC中Exchanger使用示例
package com.ywu.demo.normal.juc;import java.util.concurrent.Exchanger;/** * @description * @author wuya * @date 2019/12/12 */public class ExchangerDemo { public static void main(String[]...原创 2019-12-12 13:58:40 · 399 阅读 · 0 评论 -
阻塞队列ArrayBlockingQueue源码解析
ArrayBlockingQueue基于数组的数据结构实现,在其内部,维护了一个定长数组,以便缓存队列中的数据对象,这是一个常用的阻塞队列,除了一个定长数组外,ArrayBlockingQueue内部还保存着两个整形变量,分别标识着队列的头部坐标 takeIndex (消费数据坐标) 和尾部坐标 putIndex (生产数据坐标)。ArrayBlockingQueue也被称为有界阻塞队列,顾名思...原创 2019-12-12 11:01:57 · 330 阅读 · 0 评论 -
java多线程Phaser使用
背景某一天,小明跟五个嫂子玩游戏(羡煞我也),游戏共三关,这个游戏小明都是轻车熟路,每次都是第一个完成,但是为了照顾几个嫂子,体现一下绅士风度,得等嫂子们都完成才能继续下一关的探索啊。那怎么办呢,小明绞尽脑汁,想到了CountDownLatch和CyclicBarrier来解决这个问题。但是过了一会发现这两个不太好使,这该怎么办呢,这种关键时刻可不能掉链子,于是想啊想,查啊查,终于发现了JUC...原创 2019-12-03 14:57:47 · 404 阅读 · 0 评论 -
BlockingQueue(阻塞队列)详解
BlockingQueue(阻塞队列)详解 注意:该随笔内容完全引自http://wsmajunfeng.iteye.com/blog/1629354,写的很好,非常感谢,复制过来算是个积累,怕以后找不到。一. 前言 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全...原创 2019-11-19 14:09:36 · 374 阅读 · 0 评论