`
85977328
  • 浏览: 1904072 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java并发(三十三)栅栏CyclicBarrier

 
阅读更多
    如果说CountDownLatch(闭锁)是一次性的,那么CyclicBarrier正好可以循环使用。它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。所谓屏障点就是一组任务执行完毕的时刻。
    比如在性能测试的时候,多线程需要把数据源的连接准备好,然后执行数据库相关操作。那么“准备”这个任务就可以使用闭锁。
    关键方法
CyclicBarrier barrier = new CyclicBarrier(令牌数量);
barrier.await();//屏障点,消耗一个令牌,当令牌消耗到任务数量的时候,栅栏就会全部放开
barrier.reset();//重置,可以复用栅栏,不用重新创建栅栏对象

    参考代码
        //所有代码到barrier.await()时,栅栏开放,代码开始执行
        CompletionService<String> completionService = new ExecutorCompletionService<String>(executor);
        final int threadCount = 32;
        final CyclicBarrier barrier = new CyclicBarrier(threadCount + 1);
        for (int i = 0; i < threadCount; i++) {
            completionService.submit(new Callable<String>() {
                @Override
                public String call() throws Exception {
                    //条件准备
                    barrier.await();
                    //自定义任务
                    return null;
                }
            });
        }
        barrier.await();



参考文章
http://www.blogjava.net/xylz/archive/2010/07/12/325913.html
http://www.cnblogs.com/liuling/archive/2013/08/21/2013-8-21-01.html
1
3
分享到:
评论

相关推荐

    《java 并发编程实战高清PDF版》

    其中包括`Semaphore`(信号量)用于限制同时访问特定资源的线程数量,`CountDownLatch`(倒计时器)用于一次性阻塞多个线程,直到某个事件发生,以及`CyclicBarrier`(循环栅栏)让一组线程等待其他线程到达特定点后...

    java并发编程实践pdf笔记

    - `java.util.concurrent`包提供了一系列的并发工具类,如`Semaphore`(信号量)、`CountDownLatch`(计数器)、`CyclicBarrier`(回环栅栏)等,它们为复杂的并发场景提供了强大的支持。 - **并发集合** 如`...

    Java并发编程设计原则和模式

    2. CyclicBarrier:循环栅栏,允许一组线程等待彼此到达某个点后再一起继续执行。 3. Semaphore:信号量,用于控制对有限资源的访问权限,常用于限流和同步。 六、线程安全与内存模型 1. Java内存模型(JMM):定义...

    Java并发编程全景图.pdf

    Java并发工具类扩展了基本的并发功能,例如CountDownLatch、CyclicBarrier、Semaphore和Phaser提供了不同场景下的同步支持。Exchanger用于两个线程之间交换数据。 12. 硬件和操作系统支持 Java并发编程的成功在很大...

    java并发工具包 java.util.concurrent中文版用户指南pdf

    13. 栅栏 CyclicBarrier 14. 交换机 Exchanger 15. 信号量 Semaphore 16. 执行器服务 ExecutorService 17. 线程池执行者 ThreadPoolExecutor 18. 定时执行者服务 ScheduledExecutorService 19. 使用 ForkJoinPool ...

    Java并发编程之栅栏(CyclicBarrier)实例介绍

    Java并发编程中的栅栏(CyclicBarrier)是一个同步辅助类,它允许一组线程等待彼此到达某个特定点,然后一起继续执行。这个特定点被称为屏障点。与闭锁(CountDownLatch)不同,闭锁通常是一次性的,而CyclicBarrier...

    JAVA并发编程实践(中文)含源码

    最后,Java并发工具类,如Semaphore(信号量)、CyclicBarrier(回环栅栏)、CountDownLatch(计数器门闩)和Exchanger(交换器),提供了更高级的同步和协调机制,有助于解决复杂并发场景的问题。 通过阅读《JAVA...

    Java 并发编程实战 中英文+代码示例

    3. **并发工具类**:如Semaphore(信号量)、CountDownLatch(计数器)、CyclicBarrier(回环栅栏)和Exchanger(交换器)等,这些都是Java并发库提供的重要工具,用于实现复杂的同步和协作机制。 4. **并发集合**...

    java并发编程艺术

    3. **并发工具类**:介绍Java并发包(java.util.concurrent)中的各种工具类,如Semaphore信号量、CountDownLatch倒计时器、CyclicBarrier回环栅栏、ThreadPoolExecutor线程池等,以及如何在实际编程中合理使用它们...

    java并发工具包详解

    1. java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...

    java并发编程技术

    此外,VisualVM和JProfiler等第三方工具也是Java并发调试的好助手。 8. **Jetty服务器**:Jetty是一款轻量级的Java Web服务器和Servlet容器,支持HTTP、HTTPS等多种协议,并且具有优秀的并发性能和低内存消耗,常...

    Java并发编程全套源码

    此外,`java.util.concurrent`包还包含许多其他并发工具类,如Semaphore(信号量)用于控制同时访问特定资源的线程数量,CountDownLatch(倒计时栅栏)用于同步多个线程,CyclicBarrier(循环栅栏)用于让一组线程...

    java并发编程:设计原则与模式.rar

    Java并发工具类库(java.util.concurrent)是并发编程中的另一个重要主题,包括Atomic类(提供原子操作)、Semaphore(信号量)、CountDownLatch(计数器门锁)、CyclicBarrier(循环栅栏)和Exchanger(交换器)等...

    java 并发学习总结

    3. **同步工具类**:Java并发包`java.util.concurrent`中的工具类,如`Semaphore`(信号量)、`CyclicBarrier`(回环栅栏)、`CountDownLatch`(倒计时器)和`FutureTask`(未来任务)等,提供了更灵活的线程同步和...

    我的java并发PPT

    8. **原子性、可见性和有序性**: 这是Java并发编程的三大特性,对应于`synchronized`、`volatile`以及JVM内存模型保证的顺序性。 9. **并发编程最佳实践**: 如避免长时间阻塞操作,正确使用同步,减少共享状态,...

    Java并发工具包java.util.concurrent用户指南中英文对照阅读版.pdf

    栅栏 CyclicBarrier 14. 交换机 Exchanger 15. 信号量 Semaphore 16. 执行器服务 ExecutorService 17. 线程池执行者 ThreadPoolExecutor 18. 定时执行者服务 ScheduledExecutorService 19. 使用 ForkJoinPool 进行...

    JAVA并发编程实践

    《JAVA并发编程实践》是一本深入探讨Java并发编程技术的权威指南,涵盖了从基础理论到实战技巧的全方位内容。本书由多位资深Java并发编程专家共同编写,旨在帮助开发者理解和掌握Java并发编程的核心概念与最佳实践。...

    实战Java高并发程序设计第二版随书代码

    - **java.util.concurrent** 包:学习并发工具类,如Semaphore(信号量)、CountDownLatch(计数器)、CyclicBarrier(回环栅栏)、Exchanger(交换器)等,它们提供了高级并发控制手段。 3. **并发容器** - **...

    Java并发系列之CyclicBarrier源码分析

    Java并发系列之CyclicBarrier源码分析 CyclicBarrier是Java并发系列中的一种同步工具类,用于实现一组线程相互等待。当所有线程都到达某个屏障点后,再进行后续的操作。下面是对CyclicBarrier源码的详细分析。 ...

Global site tag (gtag.js) - Google Analytics