一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。
CyclicBarrier 支持一个可选的 Runnable
命令,在一组线程中的最后一个线程到达之后(但在释放所有线程之前),该命令只在每个屏障点运行一次。若在继续所有参与线程之前更新共享状态,此屏障操作 很有用。
范例源码:
package com.jeyo.java5; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; public class Test3 { //一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point) final CyclicBarrier barrier; //线程数 int count; class Worker implements Runnable{ int index; Worker(int index){ this.index = index; } public void run() { System.out.println("第" + index + "个线程休眠"+(2 * index)+"秒!"); try { Thread.sleep(2000 * index); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("第" + index + "个线程结束休眠!"); try { //等待其它线程都处理完毕后,再继续以下代码的执行 barrier.await(); } catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } System.out.println(index); } } public Test3(int count){ this.count = count; //公共屏障点 等待到5个线程后,执行相应的barrierAction barrier = new CyclicBarrier(count, new Runnable() { public void run(){ System.out.println("全部线程已执行完毕!"); } }); for(int i=1;i<=this.count;i++){ new Thread(new Worker(i)).start(); } } public static void main(String[] args) { new Test3(5); } }
相关推荐
通用范例可能会包含线程同步、锁机制(如synchronized关键字、ReentrantLock等)、并发工具类(如ExecutorService、CountDownLatch、CyclicBarrier)的示例。 5. **IO流**:Java的IO流系统用于读写文件和网络数据。...
- **并发工具类**:如Semaphore、CountDownLatch、CyclicBarrier、Exchanger等。 - **并发集合**:如ConcurrentHashMap、CopyOnWriteArrayList等。 - **线程池**:ExecutorService、ThreadPoolExecutor和...
此外,Java还提供了并发工具类,如ExecutorService、Semaphore和CyclicBarrier,以更高效地管理和协调并发任务。 Java标准库(Java API)包含了大量用于各种用途的类和接口,如集合、网络、I/O、日期时间、数学计算...
12. **泛型**:泛型提供了一种在编译时检查类型安全的方法,通过范例学习如何使用泛型类、泛型方法和通配符。 13. **注解(Annotation)**:注解用于元数据,学习如何创建自定义注解以及使用已有的标准注解。 14. **...
并发编程则涉及到线程间的协作,例如使用ExecutorService管理线程池,或者使用CountDownLatch和CyclicBarrier进行同步控制。 此外,Java的IO/NIO系统也是开发中的重要部分。理解流的概念,学会使用FileInputStream...
通过学习"大漠多线程范例源码",开发者不仅可以掌握多线程的基本概念,还能了解如何在实际项目中应用这些知识,解决并发问题,提升程序性能。每个子文件可能对应一个特定的多线程场景,通过分析和运行这些代码,...
还会涉及synchronized关键字、wait()、notify()和notifyAll()方法,以及高级的并发工具类如Semaphore和CyclicBarrier。 第七章:Java Swing图形用户界面 Swing是Java提供的一种用于构建桌面应用程序GUI的库。这一章...
**应用范例** ```java public class CountDownLatchExample { private static final int THREAD_COUNT = 10; private final CountDownLatch latch = new CountDownLatch(THREAD_COUNT); public void ...
12. **并发编程**:并发工具类、并发集合、CountDownLatch、CyclicBarrier等。 13. **设计模式**:单例、工厂、观察者、装饰器等23种设计模式的实现。 通过这些实例,学习者不仅可以加深对Java语言的理解,还能学习...
此外,可能会探讨并发工具类,如Semaphore、CountDownLatch和CyclicBarrier等,以及他们的应用场景。 4. **线程安全与死锁**:论文会讨论线程安全问题,如数据竞争和活锁,并分析如何预防和解决这些问题。同时,会...
6. **多线程**: 线程的创建、同步机制(synchronized、Lock)、并发工具类(Semaphore、CountDownLatch、CyclicBarrier等)。 7. **IO/NIO**: 文件操作、流的分类、缓冲流、字符编码、NIO的非阻塞特性。 8. **网络...