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");
        }
    }
  • 相关阅读:
    vue的组件名称问题
    vue引入js文件时报This dependency was not found:错误
    vue中input输入第一个字符时,光标会消失,需要再次点击才能输入
    vue中url带有#号键,去除方法
    vue路由机制导致的坑,坑,坑
    Python文件读取和数据处理
    python面向对象
    Python PIL库学习笔记
    汉诺塔的python 动画演示
    十九大报告词频分析
  • 原文地址:https://www.cnblogs.com/Courage129/p/12725391.html
Copyright © 2011-2022 走看看