1. package demo2;
    1. import java.util.concurrent.CountDownLatch;
    1. /**
    1. * Created by liudan on 2017/7/27.
    1. */
    1. public class DemoCountDownLatch {
    1. public static void main(String[] args) {
    1. final CountDownLatch countDownLatch = new CountDownLatch(3);
    1. Thread t = new Thread(new Runnable() {
    1. @Override
    1. public void run() {
    1. try {
    1. System.err.print(">登录游戏:...\t");
    1. countDownLatch.await();
    1. System.err.println("----------- 登录成功 SUCCESS-------------");
    1. } catch (InterruptedException e) {
    1. e.printStackTrace();
    1. }
    1. }
    1. },"t");
    1. Thread t1 = new Thread(new Runnable() {
    1. @Override
    1. public void run() {
    1. try {
    1. Thread.sleep(2000);
    1. System.err.print(" 3 ");
    1. countDownLatch.countDown();
    1. } catch (InterruptedException e) {
    1. e.printStackTrace();
    1. }
    1. }
    1. },"t1");
    1. Thread t2 = new Thread(new Runnable() {
    1. @Override
    1. public void run() {
    1. try {
    1. Thread.sleep(3000);
    1. System.err.print(" 2 ");
    1. countDownLatch.countDown();
    1. } catch (InterruptedException e) {
    1. e.printStackTrace();
    1. }
    1. }
    1. },"t2");
    1. Thread t3 = new Thread(new Runnable() {
    1. @Override
    1. public void run() {
    1. try {
    1. Thread.sleep(4000);
    1. System.err.println(" 1 ");
    1. countDownLatch.countDown();
    1. } catch (InterruptedException e) {
    1. e.printStackTrace();
    1. }
    1. }
    1. },"t3");
    1. t.start();
    1. t1.start();
    1. t2.start();
    1. t3.start();
    1. }
    1. }
  1. 输出:
  2. >登录游戏:... 3 2 1
  3. ----------- 登录成功 SUCCESS-------------

11.线程通信CountDownLatch的更多相关文章

  1. 10.线程通信CountDownLatch

    CountDownLatch 1.一个同步的辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个.多个线程去一直等待,用给定的计数.初始化“CountDownLatch”. 由于调用 count ...

  2. Java线程通信

    Java线程通信 螣蛇乘雾,终为土灰. 多个线程协同工作完成某个任务时就会涉及到线程间通信问题.如何使各个线程之间同时执行,顺序执行.交叉执行等. 一.线程同时执行 创建两个线程a和b,两个线程内调用 ...

  3. JAVA基础知识之多线程——线程通信

    传统的线程通信 Object提供了三个方法wait(), notify(), notifyAll()在线程之间进行通信,以此来解决线程间执行顺序等问题. wait():释放当前线程的同步监视控制器,并 ...

  4. 多线程之线程通信条件Condition

    Condition是Locks锁下的还有一种线程通信之间唤醒.堵塞的实现.它以下的await,和signal可以实现Object下的wait,notify和notifyAll的所有功能,除此之外改监视 ...

  5. Linux使用定时器timerfd 和 eventfd接口实现进程线程通信

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  6. Java Thread系列(四)线程通信

    Java Thread系列(四)线程通信 一.传统通信 public static void main(String[] args) { //volatile实现两个线程间数据可见性 private ...

  7. JAVA多线程提高二:传统线程的互斥与同步&传统线程通信机制

    本文主要是回顾线程之间互斥和同步,以及线程之间通信,在最开始没有juc并发包情况下,如何实现的,也就是我们传统的方式如何来实现的,回顾知识是为了后面的提高作准备. 一.线程的互斥 为什么会有线程的互斥 ...

  8. 从微信小程序开发者工具源码看实现原理(三)- - 双线程通信

    文章概览: 引言 小程序开发者工具双线程通信的设计 1.on: 用来收集小程序开发者工具触发的事件回调 2.invoke:以api方式调用开发工具提供的基础能力 3.publish:用来向Appser ...

  9. 第23章 java线程通信——生产者/消费者模型案例

    第23章 java线程通信--生产者/消费者模型案例 1.案例: package com.rocco; /** * 生产者消费者问题,涉及到几个类 * 第一,这个问题本身就是一个类,即主类 * 第二, ...

随机推荐

  1. 设置或者获取CheckboxList控件的选中值

    1.设置CheckBoxList选中的值 /// <summary> /// 设置CheckBoxList中哪些是选中了的 /// </summary> /// <par ...

  2. day4装饰器

    Python装饰器 1.必备 def foo(): print(foo) <function foo at 0x7f62db093f28> >>> foo <fun ...

  3. day1 str字符串常用方法

    字符串是编程中常用的类型,字符型在内存中是以单个形式存储的,比如name = "alex",在内存中存储的形式为["a","l"," ...

  4. Python 中for...esle和while...else语法

    Python的for...else和while...else语法,这是Python中最不常用,最为误解的语法特性之一. Python中的for.while循环都有一个可选的else分支(类似if语句和 ...

  5. DotNetOpenAuth实践之WebApi资源服务器

    系列目录: DotNetOpenAuth实践系列(源码在这里) 上篇我们讲到WCF服务作为资源服务器接口提供数据服务,那么这篇我们介绍WebApi作为资源服务器,下面开始: 一.环境搭建 1.新建We ...

  6. Three.js基础探寻六——文字形状与自定义形状

    1.文字形状 说起3d文字想起了早年word里的一些艺术字: 时间真快. 那么TextGeometry可以用来创建三维的文字形状. 使用文字形状需要下载和引用额外的字体库.这里,我们以 helveti ...

  7. String 不变性以及 Java 值传递和引用传递

    String 不变性以及 Java 值传递和引用传递 public class Example { String str = new String("good"); char[] ...

  8. HDU 6188 Duizi and Shunzi

    栈. 将数字排序后,一个一个压入栈.如果栈顶两个元素形成了对子,那么$ans+1$,弹出栈顶两个元素:如果栈顶三个元素形成了顺子,那么$ans+1$,弹出栈顶三个元素. #include<bit ...

  9. stl upper_bound()

    http://blog.csdn.net/niushuai666/article/details/6734650   upper_bound( a , b , k )返回有序升序序列[a,b)中能放下 ...

  10. win7环境下一次浅谈栈溢出

    在我们的生活中,存在的许许多多的漏洞,下面像大家介绍的就是平时比较常见的栈溢出漏洞的实践过程. 下面,我们用一个非常简单的例子来让大家对栈溢出漏洞有个直观的认识. 这是一个简单的密码验证程序,但因为代 ...