JUC -- 辅助类
要求:当所有人离开教室之后班长 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 -- 辅助类相关推荐
- 【JUC】第四章 JUC 辅助类、读写锁
第四章 JUC 辅助类.读写锁 文章目录 第四章 JUC 辅助类.读写锁 一.JUC 辅助类 1.减少计数 CountDownLatch 2.循环栅栏 CyclicBarrier 3.信号灯 Sema ...
- 03 - 集合线程安全、锁、Callable、JUC辅助类
目录 1. List集合线程安全问题 2.HashSet集合线程安全 3.HashMap集合线程安全 4.八种问题 5.公平锁和非公平锁 6.可重入锁 7.死锁 8.Callable接口 Future ...
- Java JUC高并发编程(三)-CallableJUC辅助类
目录 一.Callable接口 二.JUC辅助类 1.减少计数CountDownLatch 2.循环栅栏CyclicBarrier 3.信号灯Semaphore 一.Callable接口 Callab ...
- 【重难点】【JUC 02】volitale 常用模式 、JUC 下有哪些内容 、并发工具类
[重难点][JUC 02]volitale 常用模式 .JUC 下有哪些内容 .并发工具类 文章目录 [重难点][JUC 02]volitale 常用模式 .JUC 下有哪些内容 .并发工具类 一.v ...
- Java中高级程序员全程学习路线图
Java中高级程序员全程学习路线图 第一阶段:基础部分 Java基础 基本语法 变量 运算符 流程控制语句 面向对象特性 属性.方法 构造器 封装 继承 多态 抽象类.接口 高级应用 异常处理 IO流 ...
- Java工作面试必问(持续更新)
SSM 1. GET和POST请求的区别? ① GET(获取&检索)从服务器上获取数据. ① POST(创建&更新)向服务器传送数据. 误区:不是获取数据只能用GET,只是通常用GE ...
- 浅谈Java锁,与JUC的常用类,集合安全类,常用辅助类,读写锁,阻塞队列,线程池,ForkJoin,volatile,单例模式不安全,CAS,各种锁
浅谈JUC的常用类 JUC就是java.util.concurrent-包下的类 回顾多线程 Java默认有几个线程? 2 个 mian.GC Java 真的可以开启线程吗? 开不了,点击源码得知:本 ...
- JUC——JUC强大辅助类讲解
文章目录 1:JUC是什么 2:倒计数器--CountDownLatchDemo 3:循环栅栏--CyclicBarrier 4:允许多个线程同时访问--Semaphore(信号量) 1:JUC是什么 ...
- JUC并发编程之Callable接口、JUC三大辅助类
目录 8. Callable接口 8.1 创建线程的多种方式 8.2 概述 8.3 用Callable接口创建Thred线程 8.4 小结(重点) 9. JUC 三大辅助类 9.1 概述 9.2 减少 ...
- JUC 三大辅助类解读
目录 减少计数 CountDownLatch 构造办法 代码实战 循环栅栏 CyclicBarrier 构造器 代码实战 信号灯 Semaphore 构造办法 代码实战 JUC 中提供了三种常用的辅助 ...
最新文章
- java 对比两个表的字段的差异_Joolun小程序商城 2.2.2版本上线了——Java微信快速开发平台...
- 1080 Graduate Admission
- C# 写入和读出文本文件
- ASP.NET 网站路径[转载]
- 阿里云ECS服务器搭建wordpress个人博客网站【详细图文教程】
- vuex中的getters
- sqlserver 班级排名_Sqlserver:班级排名问题(转发)
- 使用gradle-android搭建jenkins slave构建机器常见构建问题(二)
- 【Algorithm】逆序数的分治求解
- 提升站点SEO的7个建议
- 【学习笔记】TRIZ 40个创新原理及解析
- SOLIDWORKS工程图导出DWG图纸时图层映射关系
- msm8996的gpio和irq
- Arduino Leonardo教程:如何回车,特殊按键定义,DIY超便宜的键盘主控
- QuTrunk与Paddle结合实践--VQA算法示例
- 搞个气氛 用MATLAB画一棵精致的圣诞树
- 记录一次Excel表格的误删恢复操作,WPS版
- 数学建模与数据分析中的时间序列分析
- virtualbox中安装xp系统、安装oracle数据库到虚拟机的xp系统中、主机连接oracle、备份xp系统、oracle数据库的一些基本概念(学习oracle数据库的准备工作)-day01
- jxl 统计图_cad的图形为什么会自动重叠成两层图形
热门文章
- LeetCode:在线编程刷题网站
- 首发速看:智微JMS901双接口U盘成功量产,附量产工具软件+固件+教程分享
- Android 谷歌发布support-v4、v7、v8、v16、v17包
- win7 Ubuntu 双系统重装 系统引导修复
- wincap网络数据包的捕获
- 最难忘的一节计算机课,最难忘的一节课作文(3篇)
- 【论文阅读】Whisper: Robust Speech Recognition via Large-Scale Weak Supervision
- 伦敦时间现在几点_英国伦敦时间现在几点钟(英国时差和中国差几个小时)
- Windows 开启护眼模式 | Windows护眼软件
- 大多数Nobody游戏下载(带象棋残局攻略) 中文破解版