Java中的CyclicBarrier循环栅栏详解

 更新时间:2023年12月16日 09:11:02   作者:小晨想好好学习  
这篇文章主要介绍了Java中的CyclicBarrier循环栅栏详解,CyclicBarrier循环栅栏是用来进行线程协作,等待线程满足某个计数,构造时设置计数个数,每个线程执行到某个需要“同步”的时刻调用 await()方法进行等待,当等待的线程数满足计数个数时,继续执行,需要的朋友可以参考下

一、是什么?

CyclicBarrier : 循环栅栏,用来进行线程协作,等待线程满足某个计数。

构造时设置计数个数,每个线程执行到某个需要“同步”的时刻调用 await() 方法进行等待,当等待的线程数满足计数个数时,继续执行

二、使用demo

   public static void main(String[] args) {
        ExecutorService service = Executors.newFixedThreadPool(3);
        CyclicBarrier barrier = new CyclicBarrier(2, ()-> {
            log.debug("task1, task2 finish...");
        });
        service.submit(() -> {
            log.debug("task1 begin...");
            sleep(1);
            try {
                barrier.await(); // 2-1=1
            } catch (InterruptedException | BrokenBarrierException e) {
                e.printStackTrace();
            }
        });
        service.submit(() -> {
            log.debug("task2 begin...");
            sleep(2);
            try {
                barrier.await(); // 1-1=0
            } catch (InterruptedException | BrokenBarrierException e) {
                e.printStackTrace();
            }
        });
        service.shutdown();
    }

在这里插入图片描述

三、注意

CyclicBarrier 与 CountDownLatch 的主要区别在于 CyclicBarrier 是可以重用的

到此这篇关于Java中的CyclicBarrier循环栅栏详解的文章就介绍到这了,更多相关CyclicBarrier循环栅栏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • jenkins+maven+svn自动部署和发布的详细图文教程

    jenkins+maven+svn自动部署和发布的详细图文教程

    Jenkins是一个开源的、可扩展的持续集成、交付、部署的基于web界面的平台。这篇文章主要介绍了jenkins+maven+svn自动部署和发布的详细图文教程,需要的朋友可以参考下
    2020-09-09
  • Java Unsafe学习笔记分享

    Java Unsafe学习笔记分享

    今天小编就为大家分享一篇Java Unsafe学习笔记,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java Web Filter 过滤器学习教程(推荐)

    Java Web Filter 过滤器学习教程(推荐)

    Filter也称之为过滤器,它是Servlet技术中最激动人心的技术.这篇文章主要介绍了Java Web Filter 过滤器学习教程的相关资料,需要的朋友可以参考下
    2016-05-05
  • SpringBoot3整合WebSocket详细指南

    SpringBoot3整合WebSocket详细指南

    SpringBoot 3 整合 WebSocket 提供了一种高效的实时通信解决方案,通过本文的配置和示例,可以快速实现,感兴趣的哦朋友跟随小编一起看看吧
    2024-12-12
  • SpringBoot 在测试时如何指定包的扫描范围

    SpringBoot 在测试时如何指定包的扫描范围

    这篇文章主要介绍了SpringBoot 在测试时如何指定包的扫描范围,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • PowerJob的HashedWheelTimer工作流程源码解读

    PowerJob的HashedWheelTimer工作流程源码解读

    这篇文章主要为大家介绍了PowerJob的HashedWheelTimer工作流程源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 深入理解spring boot 监控

    深入理解spring boot 监控

    今天通过本文给大家介绍关于spring boot 监控的相关知识,引入jar包的实例代码文中也给大家详细介绍,对spring boot 监控相关知识感兴趣的朋友一起看看吧
    2021-10-10
  • 深入了解SpringMVC初始化流程

    深入了解SpringMVC初始化流程

    框架源码是我们 Coding 晋级中的必修课,SSM 应该算是小伙伴们日常接触最多的框架了,这其中 SpringMVC 初始化流程相对来说要简单一些,因此本文就先来和大家分析一下 SpringMVC 初始化流程
    2022-07-07
  • EventBus与Spring Event区别详解(EventBus 事件机制,Spring Event事件机制)

    EventBus与Spring Event区别详解(EventBus 事件机制,Spring Event事件机制)

    这篇文章主要介绍了EventBus与Spring Event区别,需要的朋友可以参考下
    2020-02-02
  • java实现多人聊天室可视化

    java实现多人聊天室可视化

    这篇文章主要为大家详细介绍了java实现多人聊天室可视化,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06

最新评论