zoukankan      html  css  js  c++  java
  • JUC基础(四):CountDownLatch 闭锁

    CountDownLatch
     Java 5.0 在 java.util.concurrent 包中提供了多种并发容器类来改进同步容器的性能。
     CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
     闭锁可以延迟线程的进度直到其到达终止状态,闭锁可以用来确保某些活动直到其他活动都完成才继续执行:
      确保某个计算在其需要的所有资源都被初始化之后才继续执行;
      确保某个服务在其依赖的所有其他服务都已经启动之后才启动;
      等待直到某个操作所有参与者都准备就绪再继续执行。
    package com.atguigu.juc;
    
    import java.util.concurrent.CountDownLatch;
    
    /*
     * CountDownLatch :闭锁,在完成某些运算是,只有其他所有线程的运算全部完成,当前运算才继续执行
     */
    public class TestCountDownLatch {
    
        public static void main(String[] args) {
            final CountDownLatch latch = new CountDownLatch(50);
            LatchDemo ld = new LatchDemo(latch);
    
            long start = System.currentTimeMillis();
    
            for (int i = 0; i < 50; i++) {
                new Thread(ld).start();
            }
    
            try {
                latch.await();
            } catch (InterruptedException e) {
            }
    
            long end = System.currentTimeMillis();
    
            System.out.println("耗费时间为:" + (end - start));
        }
    
    }
    
    class LatchDemo implements Runnable {
    
        private CountDownLatch latch;
    
        public LatchDemo(CountDownLatch latch) {
            this.latch = latch;
        }
    
        @Override
        public void run() {
    
            try {
                for (int i = 0; i < 50000; i++) {
                    if (i % 2 == 0) {
                        System.out.println(i);
                    }
                }
            } finally {
                latch.countDown();
            }
    
        }
    
    }
  • 相关阅读:
    一些java的基础知识
    android基础AlertDialog使用
    Js+XML 操作 [ZT]
    [ASP.NET2.0] asp.net在ie7中使用FileUpload上传前预览图片 [ZT]
    C#对图片的几种简单处理 [ZT]
    使用 Bulk Copy 将大量数据复制到数据库 [ZT]
    html中name和id的区别 [ZT]
    两个分页存储过程
    C#常用的文件操作 (转)
    JSON
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14238367.html
Copyright © 2011-2022 走看看