zoukankan      html  css  js  c++  java
  • java 多线程 CountDownLatch用法

    CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

    主要方法

     public CountDownLatch(int count);

     public void countDown();

     public void await() throws InterruptedException  

    构造方法参数指定了计数的次数

    countDown方法,当前线程调用此方法,则计数减一

    awaint方法,调用此方法会一直阻塞当前线程,直到计时器的值为0

     1 public class CountDownLatchDemo {
     2     final static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     3     public static void main(String[] args) throws InterruptedException {
     4         CountDownLatch latch=new CountDownLatch(2);//两个工人的协作
     5         Worker worker1=new Worker("zhang san", 5000, latch);
     6         Worker worker2=new Worker("li si", 8000, latch);
     7         worker1.start();//
     8         worker2.start();//
     9         latch.await();//等待所有工人完成工作
    10         System.out.println("all work done at "+sdf.format(new Date()));
    11     }
    12     
    13     
    14     static class Worker extends Thread{
    15         String workerName; 
    16         int workTime;
    17         CountDownLatch latch;
    18         public Worker(String workerName ,int workTime ,CountDownLatch latch){
    19              this.workerName=workerName;
    20              this.workTime=workTime;
    21              this.latch=latch;
    22         }
    23         public void run(){
    24             System.out.println("Worker "+workerName+" do work begin at "+sdf.format(new Date()));
    25             doWork();//工作了
    26             System.out.println("Worker "+workerName+" do work complete at "+sdf.format(new Date()));
    27             latch.countDown();//工人完成工作,计数器减一
    28 
    29         }
    30         
    31         private void doWork(){
    32             try {
    33                 Thread.sleep(workTime);
    34             } catch (InterruptedException e) {
    35                 e.printStackTrace();
    36             }
    37         }
    38     }
    39     
    40      
    41 }
  • 相关阅读:
    tomcat createSecureRandom 花费了将近10分钟
    tcpdump取数据保存
    Linux TOP命令 按内存占用排序和按CPU占用排序
    在四合院里写code是什么体验(非拉仇恨)
    严重的抑郁与焦虑症
    CodeIgniter 下引入ORM Doctrine
    linux下解压
    ssh 使用密钥与登录进行远程cp
    mac os 下的sublime --- 快捷键
    pixelmator处理png图片,处理掉过白的留白。
  • 原文地址:https://www.cnblogs.com/humanchan/p/3338026.html
Copyright © 2011-2022 走看看