zoukankan      html  css  js  c++  java
  • CountDownLatch

    CountDownLatch是什么

      countDownLatch 可以实现一个或者多个线程等待,直到其他线程中的一组操作完成的同步。countDownLatch 在初始化的时候。设定一个值,该值为0以后,释放被await阻塞的线程,这个值无法被重置。一个countDownLatch可以由一个线程阻塞多个线程,也可以由多个线程阻塞一个线程。

    CountDownLatch基本方法

      await方法:包含两种多态,1种是没有入参,直接将当前线程阻塞到计数器归零,或者线程被interrupted;另外一种是带有两个入参的,通过设置一个阻塞的时长,在线程被阻塞到计数器归零,或者等待的指定时间过去。

      countDown方法:减少计数器的值。如果计数器归零,释放所有等待的线程。如果当前计数大于零,则它将递减。 如果新计数为零,则所有等待的线程都将被重新启用以进行线程调度。

    countDownLatch用法示例

     1         Thread[] threads = new Thread[100];
     2         CountDownLatch latch = new CountDownLatch(threads.length);
     3         for (int i = 0; i < threads.length; i++) {
     4             threads[i] = new Thread(()->{
     5                 int result = 0;
     6                 for (int j = 0; j < 10000; j++) {
     7                     result +=j;
     8                 }
     9                 latch.countDown();
    10             });
    11         }
    12         
    13         for (int i = 0; i < threads.length; i++) {
    14             threads[i].start();
    15         }
    16         try {
    17             latch.await();
    18         } catch (Exception e) {
    19             e.printStackTrace();
    20         }
    21         System.out.println("end latch");
    22     

    countDownLatch 与join的区别

      countDownLatch 与join的功能类似,不同之处在于:join必须等到线程全部结束后,才能调起被阻塞的线程。而countDownLatch不需要等到线程结束,只需要执行过countDown方法后,就会将计数器减1,降到0以后,被阻塞线程即可运行。countDownLatch比join线程更加灵活。

  • 相关阅读:
    inode满处理
    power shell 脚本了解
    免密脚本带端口
    linux文件 特殊权限的使用
    linux批量配置ip
    编译安装常用包+阿里镜像源-常用资源-系统-下载-科莱软件下载-docker仓库包-安全圈-杏雨梨云-图形界面安装-docker私有双仓库-阿里源报错处理-centos7目录大小
    expect免互交 常用编辑文本
    vim 插件 -- taglist
    vim 插件 -- ctags
    vim 插件 -- omnicppcomplete
  • 原文地址:https://www.cnblogs.com/liyasong/p/countDownLatch.html
Copyright © 2011-2022 走看看