初识java.util.concurrent.CountDownLatch

原创 2016年06月01日 16:17:32
package learn;


import java.util.concurrent.Callable;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


public class CountDown {
public static int num = 10;
public static void main(String[] args) throws InterruptedException {
//所有任务线程执行结束信号
CountDownLatch doneSignal = new CountDownLatch(num);
//任务执行信号
CountDownLatch startSignal = new CountDownLatch(1);

ExecutorService service = Executors.newCachedThreadPool();
for (int i = 1; i <= num; i++)
{
service.submit(new Worker(doneSignal, startSignal, i));
}

System.out.println("begin ***********************");
//任务开始执行
startSignal.countDown();
//等待所有任务执行结束
doneSignal.await();
service.shutdown();
System.out.println("Done ***********************");
}

static class Worker implements Callable<Object>
{
private CountDownLatch doneSignal;
private CountDownLatch startSignal;
private int index;


Worker(CountDownLatch doneSignal, CountDownLatch startSignal, int index)
{
this.doneSignal = doneSignal;
this.startSignal = startSignal;
this.index = index;
}

@Override
public Object call() 
{
try 
{
//等待任务执行信号
startSignal.await();
for (int i = (index - 1) * 10 + 1; i <= index * 10; i++)
{
System.out.println("worker(" + index + ") print " + i);
}

catch (InterruptedException e) {
e.printStackTrace();
}
finally
{
//任务执行结束信号
doneSignal.countDown();
}

return null;
}
}
}

JAVA学习第一课(初识JAVA)

PS:退ACM集训队了,自己也疯玩了两天,后天就开学了,就正式大二了,该收收心好好学习啦                                                        ...
  • u013497151
  • u013497151
  • 2014年08月30日 14:51
  • 2211

初识神经网络(1)

神经网络是由简单处理单元构成的大规模并行分布式处理器,天然的具有存储经验知识和使之可用的特性。神经网络在两个方面与大脑相似: 神经网络是通过学习过程从外界环境中获取知识的;互连神经元的连接强度,即突...
  • universe_ant
  • universe_ant
  • 2016年10月02日 12:33
  • 1428

第一章 初识Java

什么是Java语言 Java是于 1995年 由Sun公司推出的 极富创造力的 面向对象程序设计语言 它由Java之父——Sun研究院院士 詹姆斯·高斯林(James Gosling)博士...
  • zsg6221827
  • zsg6221827
  • 2017年03月07日 12:11
  • 192

【redis 基础篇一】redis初识

在JDB来了差不多一个月的时间了,在了解公司业务和框架的过程中,看到了在通过上游调用接口的过程中,使用到了redis来调用值,上游将一个参数传过来,我们通过这个参数去redis中读取部分参数,然后将所...
  • huo065000
  • huo065000
  • 2016年02月28日 18:57
  • 599

iOS开发之OC篇(1)——初识iOS开发

简单介绍编译器Xcode以及开发语言OC。建立一个最简单的工程,打印出“Hello world!”。...
  • u012078168
  • u012078168
  • 2016年07月07日 18:48
  • 179

【docker】初识docker

docker经过这么几年的发展,到如今更是火热到即使你没吃过猪也见过猪跑的地步,本节会给大家介绍docker的一些含义,让大家了解docker什么是DockerDocker是一个开放源代码软件项目,让...
  • qq_28602957
  • qq_28602957
  • 2016年12月21日 17:41
  • 1756

《Hadoop基础教程》之初识Hadoop

Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身。 《Hadoop基础教程》是我读的...
  • xuezhisdc
  • xuezhisdc
  • 2016年07月30日 15:46
  • 1152

初识人工智能

人工智能,之所以冠以“”人工“,最主要是因为其模仿人类的思维过程所产生的。而“”智能“”,怎样才算智能呢?前一阵子比较火的智能家居,最主要的形式是通过各种手机APP 或者终端远程控制各种家电开关,这种...
  • oangeli
  • oangeli
  • 2017年01月18日 23:35
  • 153

初识前端技术

之所以写这篇文章是在开启自己的前端学习之前,对前端技术目前的认知的一个记录,方便自己学习一段时间之后再来更新自己的认识。 1.工具 github: 作用是代码管理,类似的还有SVN,VSS。 gith...
  • colar_lady
  • colar_lady
  • 2016年10月12日 16:26
  • 171

第一章:初识lucene

lucene实战程序示例: 建立索引(使用Indexer索引文本文件) package lucene; import java.io.File; import java.io.FileFilte...
  • zwx19921215
  • zwx19921215
  • 2015年01月19日 15:31
  • 814
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:初识java.util.concurrent.CountDownLatch
举报原因:
原因补充:

(最多只允许输入30个字)