import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; /**
* 模拟了100米赛跑,10名选手已经准备就绪,只等裁判一声令下。当所有人都到达终点时,比赛结束。
* @author liuchao
*
*/
public class Actor { public static void main(String[] args) throws InterruptedException {
//10名运动员
final CountDownLatch count = new CountDownLatch(10); //java的线程池
final ExecutorService executorService = Executors.newFixedThreadPool(5); for(int index=1;index<=10;index++){
final int number = index;
executorService.submit(new Runnable() {
public void run() {
try {
Thread.sleep((long) (Math.random()*10000));
System.out.println(number+": arrived");
} catch (InterruptedException e) {
e.printStackTrace();
} finally{
//运动员到达终点,count数减一
count.countDown();
}
}
});
}
System.out.println("Game Started");
//等待count数变为0,否则会一直处于等待状态,游戏就没法结束了
count.await();
System.out.println("Game Over");
//关掉线程池
executorService.shutdown();
}
}

运行结果

Game Started
5: arrived
1: arrived
2: arrived
3: arrived
8: arrived
4: arrived
6: arrived
9: arrived
7: arrived
10: arrived
Game Over

Java线程池ExecutorService和CountDownLatch的小例子的更多相关文章

  1. [Java线程] Java线程池ExecutorService

    示例 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.u ...

  2. 【Java线程】Java线程池ExecutorService

    示例 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.u ...

  3. Java线程池 ExecutorService

    一.ExecutorService介绍 ExecutorService是Java中对线程池定义的一个接口,它java.util.concurrent包中,在这个接口中定义了和后台任务执行相关的方法:  ...

  4. Java线程池 ExecutorService了解一下

    本篇主要涉及到的是java.util.concurrent包中的ExecutorService.ExecutorService就是Java中对线程池的实现. 一.ExecutorService介绍 E ...

  5. Java线程池ExecutorService

    开篇前,我们先来看看不使用线程池的情况: new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override ...

  6. Java线程池ExecutorService 代码备忘

    ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5)创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待 p ...

  7. java 线程池(ExecutorService与Spring配置threadPoolTaskExecutor)

    一.java ExecutorService实现 创建ExecutorService变量private ExecutorService executor = null 2.执行对应任务时,首先生成线程 ...

  8. java 线程池--ExecutorService

    一 Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程. new ...

  9. PAIP.并发编程 多核编程 线程池 ExecutorService的判断线程结束

    PAIP.并发编程 多核编程 线程池 ExecutorService的判断线程结束 ExecutorService并没有提供什么 isDone()或者isComplete()之类的方法. 作者Atti ...

随机推荐

  1. Tomcat工作原理解析!

    Tomcat简介   作者:杨晓(http://blog.sina.com.cn/u/1237288325) 一.Tomcat背景 自从JSP发布之后,推出了各式各样的JSP引擎.Apache Gro ...

  2. shell编程实战总结

    最近复习一下shell,顺便高级进阶一下,之前写脚本能简单尽量简单来,发现好多高深的东西还是没有理解,因此在这里记录一下整个过程并做相应的总结. 通过上代码的方式来介绍,后续可能会调整相应的排版 1. ...

  3. 初探webpack之环境配置

    先感叹一句,前端的发展真是太快了,ng和bb还没怎么学好就要过时了.现在感觉react当是未来的一个大方向. 以前一直用的grunt,不过前段时间作者已经停止更新了.正好webpack风头正盛,咱也不 ...

  4. docker postgres

    启动一个 Postgres 实例 docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d daocloud.i ...

  5. jQuery-PHP跨域请求数据

    jQuery: //获取域名 function getDomain(url){ var a = document.createElement('a'); a.href = url; url=a.hos ...

  6. 接口测试工具 — jmeter(基本使用)

    1.打开jemeter(bin目录下jemter.bat) 2.基本操作

  7. 使用Kotlin开发Android应用(II):创建新工程

    在基本了解什么是Kotlin以及Kotlin可以做什么之后,接下来就到了配置Android Studio并使用Kotlin开发Android apps的时候了.首次配置Android Studio需要 ...

  8. new AnnotationConfigApplicationContext(MyBean.class)时,发生了什么?

    当我们run一段代码,像下面这样两行.spring究竟做了什么些,让整个容器准备就绪,交付给用户直接可用的各种特性.为了弄清楚,默默梳理记录下来. public static void main (S ...

  9. python爬取百度翻译返回:{'error': 997, 'from': 'zh', 'to': 'en', 'query 问题

    解决办法: 修改url为手机版的地址:http://fanyi.baidu.com/basetrans User-Agent也用手机版的 测试代码: # -*- coding: utf-8 -*- & ...

  10. phoneGap实现离线缓存

    引自:http://www.iteye.com/topic/1128173 正在做一个跨平台的应用,需要使用phonegap进行文件的一些基本操作. 需求如下:可以选择本地图片,或者从相机选择图片,并 ...