多线程辅助类之CountDownLatch(三)
CountDownLatch信号灯是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。它可以实现多线程的同步互斥功能,和wait和notify方法实现功能类似,具体的实现代码如下:
package face.thread.CountDownLatch; import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.CountDownLatch; public class CountDownLatchDemo3 { public static void main(String[] args) { int capaCity = 3;
final SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
final CountDownLatch start = new CountDownLatch(1);
final CountDownLatch startAnswer = new CountDownLatch(capaCity); final CountDownLatch end = new CountDownLatch(1);
final CountDownLatch endAnswer = new CountDownLatch(capaCity); for(int i=0; i<capaCity; i++){
new Thread(new Runnable() {
public void run() {
System.out.println(Thread.currentThread().getName() +"运动员准备就绪," + sdf.format(new Date()));
try {
startAnswer.countDown();
start.await();
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}finally{
System.out.println(Thread.currentThread().getName() +"运动员结束比赛," + sdf.format(new Date()));
endAnswer.countDown();
}
}
}).start();
} try {
startAnswer.await();
System.out.println("比赛开始:" + sdf.format(new Date()));
start.countDown(); endAnswer.await();
} catch (Exception e) {
e.printStackTrace();
}finally{
System.out.println("比赛结束:" + sdf.format(new Date()));
}
}
}
具体的说明参照Jdk Api,参照此例子加以理解
多线程辅助类之CountDownLatch(三)的更多相关文章
- 多线程辅助类之CyclicBarrier(四)
CyclicBarrier是一个线程辅助类,和<多线程辅助类之CountDownLatch(三)>功能类似,都可以实现一组线程的相互等待.要说不通点,那就是CyclicBarrier在释放 ...
- java多线程系列(八)---CountDownLatch和CyclicBarrie
CountDownLatch 前言:如有不正确的地方,还望指正. 目录 认识cpu.核心与线程 java多线程系列(一)之java多线程技能 java多线程系列(二)之对象变量的并发访问 java多线 ...
- Java 多线程:锁(三)
Java 多线程:锁(三) 作者:Grey 原文地址: 博客园:Java 多线程:锁(三) CSDN:Java 多线程:锁(三) StampedLock StampedLock其实是对读写锁的一种改进 ...
- Python 多线程、多进程 (三)之 线程进程对比、多进程
Python 多线程.多进程 (一)之 源码执行流程.GIL Python 多线程.多进程 (二)之 多线程.同步.通信 Python 多线程.多进程 (三)之 线程进程对比.多线程 一.多线程与多进 ...
- C# 多线程辅助类实现多任务
1)首先实现一个多线程的辅助类,代码如下: public class ThreadMulti { public delegate void DelegateComplete(); public del ...
- Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) JAVA日志的前世今生 .NET MVC采用SignalR更新在线用户数 C#多线程编程系列(五)- 使用任务并行库 C#多线程编程系列(三)- 线程同步 C#多线程编程系列(二)- 线程基础 C#多线程编程系列(一)- 简介
Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 ...
- 多线程辅助类-CountDownLatch的用法
转自:http://www.iteye.com/topic/1002652 CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 主要方 ...
- Java中多线程同步类 CountDownLatch
在多线程开发中,常常遇到希望一组线程完成之后在执行之后的操作,java提供了一个多线程同步辅助类,可以完成此类需求: 类中常见的方法: 其中构造方法:CountDownLatch(int count) ...
- Java多线程打辅助的三个小伙子
前言 之前学多线程的时候没有学习线程的同步工具类(辅助类).ps:当时觉得暂时用不上,认为是挺高深的知识点就没去管了.. 在前几天,朋友发了一篇比较好的Semaphore文章过来,然后在浏览博客的时候 ...
随机推荐
- 牛客假日团队赛2 C.修围栏
链接: https://ac.nowcoder.com/acm/contest/924/C 题意: 农民 John 希望修复围绕农场的一小段围栏.他测量了一下,发现需要N (1 <= N < ...
- mysql ibd 文件过大问题
公司的数据库挂了查了下 ,每个表都有自己独立的表空间,有一张表的ibd 文件有好几G了.然后想要释放它. 解决方案: 第一种,删除表,然后重新建.drop table 操作自动回收表空间 第二种,al ...
- beanshell解析json(从简单到复杂)
使用beanshell 解析单层Json: Json 数据如下: { "status":200, "code": 0, "message": ...
- Aspose.word组件介绍
阅读目录 1.基本介绍 2.文档对象模型概述 本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 本博客其他.NET开 ...
- 问题:java.sql.SQLException: No value specified for parameter 1
解决方案:没有指定参数 String user = req.getParameter("user"); String pwd = req.getParameter("pw ...
- 零基础逆向工程14_C语言08_指针02_反汇编
1.指针数组 5: char* keyword[] = {"if", "for", "while", "switch"} ...
- ImageLoader常用方法注释
ImageLoader中的常用方法及相关作用注释 ImageLoader 的ImageLoaderConfiguration config 配置 ImageLoaderConfiguration co ...
- python发送邮件 示例
示例1 import smtplib from email.mime.text import MIMEText from email.header import Header def sedmail( ...
- JavaScript命名——name不能做变量名
使用name作为变量名(var name = ‘’),在IE中未引起bug,在Chrome中引起bug但未明确指出命名错误,而是会报其他错误,故不便于发现. 现象原因: javascript中name ...
- .net后台使用post方式对指定地址的方法传值并且获取结果的方法
/// <summary> /// .net 后台 post http地址请求 /// </summary> /// <param name="uri" ...