文档章节

怎么实现所有线程在等待某个事件的发生才会去执行

qimh
 qimh
发布于 2018/03/30 12:28
字数 276
阅读 908
收藏 0

每天起早贪黑的上班,父母每天也要上班,话说今天定了个饭店,一家人一起吃个饭,通知大家下班去饭店集合。假设:3个人在不同的地方上班,必须等到3个人到场才能吃饭,用程序如何实现呢?

 

代码如下:

package com.qimh.concurrent;

import java.util.concurrent.CountDownLatch;

public class CountDownLatchDemo {
	
	
	
	
	 /** 
     * 模拟爸爸去饭店 
     */  
    public static void fatherToRes()  
    {  
        System.out.println("爸爸步行去饭店需要3小时。");  
    }  
  
    /** 
     * 模拟我去饭店 
     */  
    public static void motherToRes()  
    {  
        System.out.println("妈妈挤公交去饭店需要2小时。");  
    }  
  
    /** 
     * 模拟妈妈去饭店 
     */  
    public static void meToRes()  
    {  
        System.out.println("我乘地铁去饭店需要1小时。");  
    }  
  
    /** 
     * 模拟一家人到齐了 
     */  
    public static void togetherToEat()  
    {  
        System.out.println("一家人到齐了,开始吃饭");  
    }  

	
	private static CountDownLatch latch = new CountDownLatch(3);  
	  
    public static void main(String[] args) throws InterruptedException  
    {  
  
        new Thread()  
        {  
            public void run()  
            {  
                fatherToRes();  
                latch.countDown();  
            };  
        }.start();  
        new Thread()  
        {  
            public void run()  
            {  
                motherToRes();  
                latch.countDown();  
            };  
        }.start();  
        new Thread()  
        {  
            public void run()  
            {  
                meToRes();  
                latch.countDown();  
            };  
        }.start();  
  
        latch.await();  
        togetherToEat();  
    }  
}

参考案例:https://blog.csdn.net/lmj623565791/article/details/26626391

© 著作权归作者所有

qimh
粉丝 10
博文 473
码字总数 84856
作品 0
滁州
程序员
私信 提问
加载中

评论(0)

Q:你了解异步编程、进程、单线程、多线程吗?

相关定义 Javascript语言将任务的执行模式分成两种:同步(Synchronous)和异步(Asynchronous)。 同步:一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将...

Juicyangxj
2017/11/28
0
0
19、Java并发性和多线程-嵌套管程锁死

以下内容转自http://ifeve.com/nested-monitor-lockout/: 嵌套管程锁死类似于死锁, 下面是一个嵌套管程锁死的场景: 线程1获得A对象的锁。线程1获得对象B的锁(同时持有对象A的锁)。线程1...

easonjim
2017/06/16
0
0
【原创】MySQL Proxy - 底层实现篇

底层实现篇(chassis) 【Configfile and Commandline Options】 glib2 提供了 config-file 解析和 command-line option 解析功能。 其提供了将 option 以相同方式暴露给调用者的方法,以及从...

摩云飞
2013/03/17
2.7K
5
【死磕Java并发】-----J.U.C之并发工具类:CyclicBarrier

此篇博客所有源码均来自JDK 1.8 CyclicBarrier,一个同步辅助类,在API中是这么介绍的: 它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程...

chenssy
2017/04/13
0
0
Javascript 异步实现机制

Javascript 单线程指的是在一个浏览器进程中只存在一个 Javascript 执行线程,所以任务需要顺序排列等待执行,而不能像 Java 等多线程语言一样并发执行。但是这种单线程模型在处理耗时的异步...

木头先生
2017/12/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

刚哥谈架构 (五) 谈谈数据库架构

无论是构建什么样的应用,大都离不开数据。而在应用的架构设计中,如何设计数据库,使用什么类型的数据库,就是一个架构师必须了解的。所有的数据库的共同点都是以某种方式存储数据,以某种接...

naughty
41分钟前
52
0
明洞明

尼石露🀄️华 🀄️华尼石露 叶果城🀄️华 悟明夫妻国 🀄️国梦🀄️国 国🀄️国世界

悟明夫妻国世界
今天
117
0
OSChina 周一乱弹 —— 妹子,我家的猫发芽了,你要来我家看看吗

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《Gypsophila》- MoreanP 手机党少年们想听歌,请使劲儿戳(这里) @蓝瞳 :愁,明...

小小编辑
今天
103
1
Bochs入门

一、Bochs简介 Bochs(读音同 Box)是完全使用软件模拟PC的开源x86模拟器,与使用虚拟化技术的虚拟机相比,虽然速度慢,但非常适合开发、调试操作系统。 二、配置操作系统 Bochs根据配置文件...

悠悠子佩
今天
57
0
什么是哈希表?

我们在这篇文章将要学习最有用的数据结构之一—哈希表,哈希表的英文叫 Hash Table,也可以称为散列表或者 Hash 表。 哈希表用的是数组支持按照下标随机访问数据的特性,所以哈希表其实就是数...

武培轩
今天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部