CountDownLatch

可以实现线程,实时通信

Await方法,等待
countDown方法,通知

区别

CountDownLatch,不需要配合synchronize使用
Wait/notify,必须配合synchronize使用

package com.bjsxt.base.conn008;import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.LinkedBlockingQueue;
/*** wait notfiy 方法,wait释放锁,notfiy不释放锁**/
public class ListAdd2 {private volatile static List list = new ArrayList();    public void add(){list.add("bjsxt");}public int size(){return list.size();}public static void main(String[] args) {final ListAdd2 list2 = new ListAdd2();// 1 实例化出来一个 lock// 当使用wait 和 notify 的时候 , 一定要配合着synchronized关键字去使用//final Object lock = new Object();final CountDownLatch countDownLatch = new CountDownLatch(1);Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {try {//synchronized (lock) {for(int i = 0; i <10; i++){list2.add();System.out.println("当前线程:" + Thread.currentThread().getName() + "添加了一个元素..");Thread.sleep(500);if(list2.size() == 5){System.out.println("已经发出通知..");countDownLatch.countDown();//lock.notify();}}                       //}} catch (InterruptedException e) {e.printStackTrace();}}}, "t1");Thread t2 = new Thread(new Runnable() {@Overridepublic void run() {//synchronized (lock) {if(list2.size() != 5){try {//System.out.println("t2进入...");//lock.wait();countDownLatch.await();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("当前线程:" + Thread.currentThread().getName() + "收到通知线程停止..");throw new RuntimeException();//}}}, "t2");   t2.start();t1.start();}}

运行

线程t1,添加了5个元素,发出通知
此时,线程t2会立即执行,不用等到线程t1执行完毕

注意
这里,1表示通知的次数
通知1次,就会唤醒线程t2

CountDownLatch实时通信相关推荐

  1. Java并发编程之CountDownLatch、CyclicBarrier和Semaphore

    前言 本文为对CountDownLatch.CyclicBarrier.Semaphore的整理使用 CountDownLatch CountDownLatch类位于java.util.concurr ...

  2. java并发之同步辅助类CyclicBarrier和CountDownLatch

    CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier).它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门, ...

  3. java 并发统计_java并发编程|CountDownLatch计数器

    0x01,CountDownLatch介绍 CountDownLatch是一个计数器,作为java并发编程中三个组件之一,这个组件的使用频率还是很多的.这里分享下自己画的java并发编程组件的图,后面 ...

  4. JAVA中的并发工具 -- CountDownLatch、CyclicBarrier、Semaphore

    2019独角兽企业重金招聘Python工程师标准>>> CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作. CountDownLatc ...

  5. Java常用多线程辅助工具---countdownLatch

    为什么80%的码农都做不了架构师?>>> 前言 上一篇博文说到semaphore,一个加强版的synchronized,该多线程辅助工具适用于控制对资源操作或者访问的场景.现在有一张 ...

  6. 一文搞懂 CountDownLatch 用法和源码!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! CountDownLatch 是多线程控制的一种工具,它被 ...

  7. CountDownLatch的实现分析

    CountDownLatch CountdownLatch 是 JDK 并发包中提供的并发工具类,其允许一个或多个线程等待其他线程完成操作.常用作将一个任务拆分成多个子任务同时执行,只有子任务都执行完 ...

  8. LeetCode 1195. Fizz Buzz Multithreaded--并发系列题目--Java 解法--AtomicInteger/CountDownLatch/CyclicBarrier

    题目地址:Fizz Buzz Multithreaded - LeetCode Write a program that outputs the string representation of nu ...

  9. CycliBarriar和CountdownLatch(计数器)

    CyclicBarrier可以重复使用,而CountdownLatch不能重复使用. countDownLatch这个类使一个线程等待其他线程各自执行完毕再执行. 是通过一个计数器来实现的,计数器的初 ...

最新文章

  1. AirPods Pro真香,送一款!
  2. Core Graphics
  3. 上下定高 中间自适应_移动端布局上下固定中间自适应
  4. 895. 最长上升子序列
  5. android recycleview长按多选_UI设计中Android和IOS设计差异总结
  6. 入门机器学习(八)--神经网络参数的反向传播算法
  7. 雷林鹏分享:jQuery EasyUI 拖放 - 基本的拖动和放置
  8. 伸展树(splay tree)
  9. 英国外交部翻译教你实用口语课,让你飚出一口地道、流利英语
  10. 【论文简述及翻译】RAFT: Recurrent All-Pairs Field Transforms for Optical Flow(ECCV 2020)
  11. Smartbi:水泥行业实现数字化转型升级势在必行
  12. 【历史上的今天】9 月 29 日:“美国支付宝” Stripe 正式上线;HotJava 面世;VR/AR 领域先驱诞生
  13. 深入剖析 redis 事件驱动
  14. (一)掰开了,揉碎了,说经典halcon中的那些算子
  15. 设计抗混叠滤波器的三个指导原则--日记
  16. 【源码开发分享】计算机毕业设计之Python+Spark+Scrapy新闻推荐系统 新闻大数据 新闻情感分析 新闻文本分类 新闻数据分析 新闻爬虫可视化 大数据毕业设计
  17. 视觉SLAM十四讲学习笔记-第三讲-旋转向量、欧拉角、四元数
  18. AVI和WAV格式文件分析
  19. 不能打印机与计算机,电脑打印机无法打印
  20. Creative的迷失与重生之路

热门文章

  1. Spring MVC能响应HTTP请求的原因?
  2. JavaScript校验身份证,包含省份、长度、出生年月日、校验位的检测、性别、年龄...
  3. 项目开发涉及循坏的小思路
  4. 【开源】接口管理平台eoLinker AMS 开源版3.1.5同步线上版!免费增加大量功能!...
  5. 201521123113 《Java程序设计》第5周学习总结
  6. 仿京东首页上侧导航左侧地址栏布局(1)
  7. Quartz在Spring中动态设置cronExpression
  8. 蓝牙HCI剖析(二)
  9. 趣链 BitXHub跨链平台 (6)IBC通信协议
  10. 区块链BaaS云服务(11)招商银行ABS区块链平台