zoukankan      html  css  js  c++  java
  • Java并发组件一之CountDownLatch

    使用场景:

          一个或N个线程,等待其它线程完成某项操作之后才能继续往下执行。CountDownLatch描述的是,一个或N个线程等待其他线程的关系。

    使用方法:
    1. 设CountDownLatch个数:CountDownLatch countDownLatch=new CountDownLatch(3);
    2. 在等待线程中await:countDownLatch.await();
    3. 在其他线程中减少count值:countDownLatch.getCount();
    4. 一旦其他线程中的countDownLatch.getCount()的次数为实例化时的count值,就唤醒等待线程
    public class T06_TestCountDownLatch {
        public static void main(String[] args) {
            usingJoin();
            usingCountDownLatch();
        }
    
        private static void usingCountDownLatch() {
            Thread[] threads = new Thread[100];
            CountDownLatch latch = new CountDownLatch(threads.length);
    
            for(int i=0; i<threads.length; i++) {
                threads[i] = new Thread(()->{
                    int result = 0;
                    for(int j=0; j<10000; j++) result += j;
                    latch.countDown();
                });
            }
    
            for (int i = 0; i < threads.length; i++) {
                threads[i].start();
            }
    
            try {
                latch.await();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
            System.out.println("end latch");
        }
    
        private static void usingJoin() {
            Thread[] threads = new Thread[100];
    
            for(int i=0; i<threads.length; i++) {
                threads[i] = new Thread(()->{
                    int result = 0;
                    for(int j=0; j<10000; j++) result += j;
                });
            }
    
            for (int i = 0; i < threads.length; i++) {
                threads[i].start();
            }
    
            for (int i = 0; i < threads.length; i++) {
                try {
                    threads[i].join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
    
            System.out.println("end join");
        }
    }
  • 相关阅读:
    Codeforces 429 A. Xor-tree
    有趣的游戏:Google XSS Game
    三层架构(一个)——什么是三层架构?
    atitit.ajax bp dwr 3.该票据安排使用的流量汇总 VO9o.....
    深入struts2.0(五)--Dispatcher类
    update与fixedupdate差别
    Android 平台 HTTP网速測试 案例 API 分析
    Matlab画图-非常具体,非常全面
    词性标注
    windows消息钩子
  • 原文地址:https://www.cnblogs.com/Courage129/p/12725391.html
Copyright © 2011-2022 走看看