Java并发编程:CountDownLatch和CyclicBarrier的使用示例 原创 曾经终败给现在 2024-10-31 21:51 5阅读 0赞 在Java并发编程中,`CountDownLatch`和`CyclicBarrier`是两个常用的同步辅助类,它们可以帮助我们控制并发任务的执行顺序。下面我将分别给出这两个类的使用示例。 ### CountDownLatch的使用示例`CountDownLatch`是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 ```javaimport java.util.concurrent.CountDownLatch; public class CountDownLatchExample { public static void main(String[] args) throws InterruptedException { final int threadCount =3; CountDownLatch latch = new CountDownLatch(threadCount); for (int i =0; i < threadCount; i++) { new Thread(new Worker(latch)).start(); } latch.await(); //等待所有线程完成 System.out.println("所有任务完成"); } static class Worker implements Runnable { private final CountDownLatch latch; public Worker(CountDownLatch latch) { this.latch = latch; } @Override public void run() { try { System.out.println(Thread.currentThread().getName() + " 开始执行任务"); //模拟任务执行时间Thread.sleep(1000); System.out.println(Thread.currentThread().getName() + "任务完成"); } catch (InterruptedException e) { e.printStackTrace(); } finally { latch.countDown(); //任务完成,计数减1 } } } } ```### CyclicBarrier的使用示例`CyclicBarrier`是一个同步辅助类,它允许一组线程相互等待,直到所有线程都到达某个公共屏障点(barrier point)。 ```javaimport java.util.concurrent.CyclicBarrier; import java.util.concurrent.TimeUnit; public class CyclicBarrierExample { public static void main(String[] args) { final int threadCount =3; CyclicBarrier barrier = new CyclicBarrier(threadCount, new Runnable() { @Override public void run() { System.out.println("所有任务完成,继续执行下一步"); } }); for (int i =0; i < threadCount; i++) { new Thread(new Worker(barrier)).start(); } } static class Worker implements Runnable { private final CyclicBarrier barrier; public Worker(CyclicBarrier barrier) { this.barrier = barrier; } @Override public void run() { try { System.out.println(Thread.currentThread().getName() + " 开始执行任务"); //模拟任务执行时间Thread.sleep(1000); System.out.println(Thread.currentThread().getName() + "到达屏障点,等待其他线程"); barrier.await(); //等待其他线程到达屏障点 System.out.println(Thread.currentThread().getName() + "继续执行任务"); } catch (Exception e) { e.printStackTrace(); } } } } ```在这两个示例中,`CountDownLatch`用于确保主线程等待所有工作线程完成,而`CyclicBarrier`则用于让所有工作线程在某个点上相互等待,直到所有线程都到达该点后,再一起继续执行。这两个类在并发编程中非常有用,可以帮助我们更好地控制线程的执行顺序。 文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。
相关 Java并发编程:CountDownLatch和CyclicBarrier的使用示例 在Java并发编程中,`CountDownLatch`和`CyclicBarrier`是两个常用的同步辅助类,它们可以帮助我们控制并发任务的执行顺序。下面我将分别给出这两个类的 曾经终败给现在/ 2024年10月31日 21:51/ 0 赞/ 6 阅读
相关 Java并发工具:CountDownLatch和CyclicBarrier使用示例 CountDownLatch和CyclicBarrier是Java中的两个重要并发工具,它们在控制多个线程的执行顺序上有各自的应用场景。以下是这两个工具的使用示例: 1. C 傷城~/ 2024年10月15日 22:12/ 0 赞/ 39 阅读
相关 Java并发编程中CountDownLatch和CyclicBarrier使用示例 CountDownLatch和CyclicBarrier是Java并发库中的两种重要工具,它们主要用于协调多个线程的执行。 1. CountDownLatch: CountD 怼烎@/ 2024年10月14日 19:15/ 0 赞/ 45 阅读
相关 Java并发工具:CountDownLatch和CyclicBarrier的使用示例 `CountDownLatch` 和 `CyclicBarrier` 都是 Java 中用于管理线程并发的工具类。以下是它们的基本使用示例: 1. **CountDownLa 柔情只为你懂/ 2024年10月10日 22:54/ 0 赞/ 53 阅读
相关 Java并发工具:CountDownLatch和CyclicBarrier的使用示例 CountDownLatch和CyclicBarrier都是Java中常用的并发工具,主要用于协调多个线程的执行。 1. CountDownLatch: CountDown ゞ 浴缸里的玫瑰/ 2024年10月07日 11:18/ 0 赞/ 57 阅读
相关 Java并发编程:CountDownLatch、CyclicBarrier等工具使用示例 Java的`CountDownLatch`, `CyclicBarrier`是两种常用的同步工具,用于多线程之间的协调和控制。 1. CountDownLatch Coun 矫情吗;*/ 2024年09月20日 06:33/ 0 赞/ 70 阅读
相关 Java并发编程:CountDownLatch和CyclicBarrier示例 `CountDownLatch` 和 `CyclicBarrier` 是 Java 中两个常用的并发工具,它们主要用于协调多个线程的执行顺序。 1. CountDownLat 超、凢脫俗/ 2024年09月20日 00:12/ 0 赞/ 50 阅读
相关 Java并发编程:CountDownLatch和CyclicBarrier示例 在Java的并发编程中,CountDownLatch和CyclicBarrier是两个常用的同步工具。它们分别用于等待一组操作完成和循环等待所有线程完成特定任务。 1. Co 一时失言乱红尘/ 2024年09月10日 11:54/ 0 赞/ 65 阅读
相关 Java并发编程——CountDownLatch和CyclicBarrier 一、引言 在Java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier、Semaphore。下面就 野性酷女/ 2022年03月01日 15:00/ 0 赞/ 323 阅读
还没有评论,来说两句吧...