CountDownLatch的用法
来源:互联网 发布:炫踪网络 金利科技 编辑:程序博客网 时间:2024/06/08 19:14
1. CountDownLatch定义
一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
2.主要方法
public CountDownLatch(int count);
public void countDown();
public void await() throws InterruptedException
构造方法参数指定了计数值(count)实际上就是闭锁需要等待的线程数量
countDown方法,当前线程调用此方法,则计数减一
await方法,调用此方法会一直阻塞当前线程,直到计时器的值为0
3.例子
public class CountDownLatchDemo { final static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static void main(String[] args) throws InterruptedException { CountDownLatch latch=new CountDownLatch(2);//两个工人的协作 Worker worker1=new Worker("zhang san", 5000, latch); Worker worker2=new Worker("li si", 8000, latch); worker1.start();// worker2.start();// latch.await();//等待所有工人完成工作 System.out.println("all work done at "+sdf.format(new Date())); } static class Worker extends Thread{ String workerName; int workTime; CountDownLatch latch; public Worker(String workerName ,int workTime ,CountDownLatch latch){ this.workerName=workerName; this.workTime=workTime; this.latch=latch; } public void run(){ System.out.println("Worker "+workerName+" do work begin at "+sdf.format(new Date())); doWork();//工作了 System.out.println("Worker "+workerName+" do work complete at "+sdf.format(new Date())); latch.countDown();//工人完成工作,计数器减一 } private void doWork(){ try { Thread.sleep(workTime); } catch (InterruptedException e) { e.printStackTrace(); } } }}
输出:
Worker zhang san do work begin at 2011-04-14 11:05:11
Worker li si do work begin at 2011-04-14 11:05:11
Worker zhang san do work complete at 2011-04-14 11:05:16
Worker li si do work complete at 2011-04-14 11:05:19
all work done at 2011-04-14 11:05:19
原文链接
阅读全文
0 0
- countdownlatch的用法
- CountDownLatch的用法
- CountDownLatch的用法
- 闭锁CountDownLatch的用法
- CountDownLatch的用法
- 浅谈CountDownLatch的用法
- CountDownLatch的用法
- CountDownLatch和CyclicBarrier 的用法
- Java中CountDownLatch的用法
- Java中CountDownLatch的用法
- CountDownLatch用法
- CountDownLatch用法
- CountDownLatch用法
- CountDownLatch用法
- CountDownLatch 用法
- CountDownLatch用法
- CountDownLatch用法
- CountDownLatch用法
- 刷清橙OJ--A1051.DNA序列
- shell find命令用法
- 学Java入门篇:Java类的基本内容
- 软件架构师书籍
- 从客户端中检测到有潜在危险的 Request.Form值
- CountDownLatch的用法
- JVM 指令助记符
- Python关于运行出现错误IndentationError: unindent does not match any outer indentation level
- Linux学习笔记
- sphinx增量索引和主索引来实现索引的实时更新
- [vim] 滚动屏幕快捷键记忆
- kaldi中深度学习的主要实现-
- 判断PC端还是移动端JS
- 常用的URL Scheme客户端配置