要求:当所有人离开教室之后班长 main线程关门

public class CountDownLatchDemo {public static void main(String[] args) {for (int i = 1; i <= 6; i++) {new Thread(() -> {System.out.println(Thread.currentThread().getName() + "\t离开教室");}, String.valueOf(i)).start();}System.out.println(Thread.currentThread().getName() + "关门");}
}

多线程情况下main可能会先执行,所以需要并发辅助类 CountDownLatch

public class CountDownLatchDemo {public static void main(String[] args) throws InterruptedException {// 总数是6,必须要执行任务的时候,再使用!CountDownLatch countDownLatch = new CountDownLatch(6);for (int i = 1; i <=6 ; i++) {new Thread(()->{System.out.println(Thread.currentThread().getName()+"\t离开教室");countDownLatch.countDown(); // 数量-1},String.valueOf(i)).start();}countDownLatch.await(); // 等待计数器归零,然后再向下执行System.out.println(Thread.currentThread().getName()+"Close Door");}
}

要求:集齐七颗龙珠召唤神龙

正向计数器 CyclicBarrier

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;public class CyclicBarrierDemo {public static void main(String[] args) {CyclicBarrier cyclicBarrier = new CyclicBarrier(7,()->{ System.out.println("*********召唤神龙"); });for (int i = 1; i <=7 ; i++) {final int temp = i;// lambda能操作到 i 吗new Thread(()->{System.out.println(Thread.currentThread().getName()+"收集"+temp+"个龙珠");try {cyclicBarrier.await(); // 等待} catch (InterruptedException e) {e.printStackTrace();} catch (BrokenBarrierException e) {e.printStackTrace();}}).start();}}
}

要求:抢车位 Semaphore

import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;public class SemaphoreDemo {public static void main(String[] args) {// 线程数量:停车位! 限流!Semaphore semaphore = new Semaphore(3);for (int i = 1; i <=6 ; i++) {new Thread(()->{// acquire() 得到try {semaphore.acquire();System.out.println(Thread.currentThread().getName()+"抢到车位");TimeUnit.SECONDS.sleep(2);System.out.println(Thread.currentThread().getName()+"离开车位");} catch (InterruptedException e) {e.printStackTrace();} finally {semaphore.release(); // release() 释放}},String.valueOf(i)).start();}}
}

多用于线程的并发量控制,

当构造参数为1的时候相当于syn但是可以进行时间控制

JUC -- 辅助类相关推荐

  1. 【JUC】第四章 JUC 辅助类、读写锁

    第四章 JUC 辅助类.读写锁 文章目录 第四章 JUC 辅助类.读写锁 一.JUC 辅助类 1.减少计数 CountDownLatch 2.循环栅栏 CyclicBarrier 3.信号灯 Sema ...

  2. 03 - 集合线程安全、锁、Callable、JUC辅助类

    目录 1. List集合线程安全问题 2.HashSet集合线程安全 3.HashMap集合线程安全 4.八种问题 5.公平锁和非公平锁 6.可重入锁 7.死锁 8.Callable接口 Future ...

  3. Java JUC高并发编程(三)-CallableJUC辅助类

    目录 一.Callable接口 二.JUC辅助类 1.减少计数CountDownLatch 2.循环栅栏CyclicBarrier 3.信号灯Semaphore 一.Callable接口 Callab ...

  4. 【重难点】【JUC 02】volitale 常用模式 、JUC 下有哪些内容 、并发工具类

    [重难点][JUC 02]volitale 常用模式 .JUC 下有哪些内容 .并发工具类 文章目录 [重难点][JUC 02]volitale 常用模式 .JUC 下有哪些内容 .并发工具类 一.v ...

  5. Java中高级程序员全程学习路线图

    Java中高级程序员全程学习路线图 第一阶段:基础部分 Java基础 基本语法 变量 运算符 流程控制语句 面向对象特性 属性.方法 构造器 封装 继承 多态 抽象类.接口 高级应用 异常处理 IO流 ...

  6. Java工作面试必问(持续更新)

    SSM  1. GET和POST请求的区别? ① GET(获取&检索)从服务器上获取数据. ① POST(创建&更新)向服务器传送数据. 误区:不是获取数据只能用GET,只是通常用GE ...

  7. 浅谈Java锁,与JUC的常用类,集合安全类,常用辅助类,读写锁,阻塞队列,线程池,ForkJoin,volatile,单例模式不安全,CAS,各种锁

    浅谈JUC的常用类 JUC就是java.util.concurrent-包下的类 回顾多线程 Java默认有几个线程? 2 个 mian.GC Java 真的可以开启线程吗? 开不了,点击源码得知:本 ...

  8. JUC——JUC强大辅助类讲解

    文章目录 1:JUC是什么 2:倒计数器--CountDownLatchDemo 3:循环栅栏--CyclicBarrier 4:允许多个线程同时访问--Semaphore(信号量) 1:JUC是什么 ...

  9. JUC并发编程之Callable接口、JUC三大辅助类

    目录 8. Callable接口 8.1 创建线程的多种方式 8.2 概述 8.3 用Callable接口创建Thred线程 8.4 小结(重点) 9. JUC 三大辅助类 9.1 概述 9.2 减少 ...

  10. JUC 三大辅助类解读

    目录 减少计数 CountDownLatch 构造办法 代码实战 循环栅栏 CyclicBarrier 构造器 代码实战 信号灯 Semaphore 构造办法 代码实战 JUC 中提供了三种常用的辅助 ...

最新文章

  1. java 对比两个表的字段的差异_Joolun小程序商城 2.2.2版本上线了——Java微信快速开发平台...
  2. 1080 Graduate Admission
  3. C# 写入和读出文本文件
  4. ASP.NET 网站路径[转载]
  5. 阿里云ECS服务器搭建wordpress个人博客网站【详细图文教程】
  6. vuex中的getters
  7. sqlserver 班级排名_Sqlserver:班级排名问题(转发)
  8. 使用gradle-android搭建jenkins slave构建机器常见构建问题(二)
  9. 【Algorithm】逆序数的分治求解
  10. 提升站点SEO的7个建议
  11. 【学习笔记】TRIZ 40个创新原理及解析
  12. SOLIDWORKS工程图导出DWG图纸时图层映射关系
  13. msm8996的gpio和irq
  14. Arduino Leonardo教程:如何回车,特殊按键定义,DIY超便宜的键盘主控
  15. QuTrunk与Paddle结合实践--VQA算法示例
  16. 搞个气氛 用MATLAB画一棵精致的圣诞树
  17. 记录一次Excel表格的误删恢复操作,WPS版
  18. 数学建模与数据分析中的时间序列分析
  19. virtualbox中安装xp系统、安装oracle数据库到虚拟机的xp系统中、主机连接oracle、备份xp系统、oracle数据库的一些基本概念(学习oracle数据库的准备工作)-day01
  20. jxl 统计图_cad的图形为什么会自动重叠成两层图形

热门文章

  1. LeetCode:在线编程刷题网站
  2. 首发速看:智微JMS901双接口U盘成功量产,附量产工具软件+固件+教程分享
  3. Android 谷歌发布support-v4、v7、v8、v16、v17包
  4. win7 Ubuntu 双系统重装 系统引导修复
  5. wincap网络数据包的捕获
  6. 最难忘的一节计算机课,最难忘的一节课作文(3篇)
  7. 【论文阅读】Whisper: Robust Speech Recognition via Large-Scale Weak Supervision
  8. 伦敦时间现在几点_英国伦敦时间现在几点钟(英国时差和中国差几个小时)
  9. Windows 开启护眼模式 | Windows护眼软件
  10. 大多数Nobody游戏下载(带象棋残局攻略) 中文破解版