Java并发编程:CountDownLatch和CyclicBarrier示例 原创 一时失言乱红尘 2024-09-10 11:54 12阅读 0赞 在Java的并发编程中,CountDownLatch和CyclicBarrier是两个常用的同步工具。它们分别用于等待一组操作完成和循环等待所有线程完成特定任务。 1. CountDownLatch CountDownLatch是一种单向门控,它最初有N个计数器,当一个线程调用release方法后,对应的计数器减1,当计数器变为0时,其他等待的线程会进入wait状态,直到调用await或countDown的线程再次执行release方法。 示例代码: ```java import java.util.concurrent.CountDownLatch; public class CountDownLatchExample { public static void main(String[] args) { // 创建一个CountDownLatch,初始值为3 CountDownLatch countDownLatch = new CountDownLatch(3); // 创建两个线程,分别调用countDown方法 Thread thread1 = new Thread(() -> { try { countDownLatch.countDown(); System.out.println("Thread 1: After counting down, waiting for signal to continue."); } catch (InterruptedException e) { e.printStackTrace(); } })); Thread thread2 = new Thread(() -> { try { countDownLatch.await(5000, TimeUnit.MILLISECONDS)); // 设置等待时间为5秒 System.out.println("Thread 2: After waiting for signal to continue, continuing."); } catch (InterruptedException | TimeoutException e) { e.printStackTrace(); } })); // 启动两个线程 thread1.start(); thread2.start(); // 线程执行完毕后,关闭CountDownLatch countDownLatch.countDown(); } } ``` 2. CyclicBarrier CyclicBarrier是一种同步工具,当一个线程调用await方法后,它会一直等待,直到所有等待的线程都到达了屏障。 示例代码: ```java import java.util.concurrent.CyclicBarrier; public class CyclicBarrierExample { public static void main(String[] args) { // 创建一个CyclicBarrier,初始值为2 CyclicBarrier cyclicBarrier = new CyclicBarrier(2); // 创建两个线程,分别调用 BarrierTask的doWork方法 Thread thread1 = new Thread(() -> { try { cyclicBarrier.await(); // 等待到达屏障 System.out.println("Thread 1: After reaching barrier, continuing."); } catch (Exception e) { e.printStackTrace(); } })); Thread thread2 = new Thread(() -> { try { cyclicBarrier.await(); // 等待到达屏障 System.out.println("Thread 2: After reaching barrier, continuing."); } catch (Exception e) { e.printStackTrace(); } })); // 启动两个线程 thread1.start(); thread2.start(); // 当所有线程都到达屏障时,关闭CyclicBarrier cyclicBarrier.countDown(); // 这将导致屏障的计数器减1,当计数器变为0时,所有等待的线程都将被唤醒 } } ``` 这两个工具在Java并发编程中经常用来协调多个线程的行为。 文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。
相关 Java并发编程:CountDownLatch和CyclicBarrier示例 在Java的并发编程中,CountDownLatch和CyclicBarrier是两个常用的同步工具。它们分别用于等待一组操作完成和循环等待所有线程完成特定任务。 1. Co 一时失言乱红尘/ 2024年09月10日 11:54/ 0 赞/ 13 阅读
相关 Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这 本是古典 何须时尚/ 2022年05月21日 05:10/ 0 赞/ 174 阅读
相关 Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore 原文出处: [海子][Link 1] 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和 梦里梦外;/ 2022年05月20日 02:41/ 0 赞/ 261 阅读
相关 Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore 转载: 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们 心已赠人/ 2022年05月16日 04:30/ 0 赞/ 230 阅读
相关 Java并发编程——CountDownLatch、CyclicBarrier和Semaphore 本文转自:[https://www.cnblogs.com/dolphin0520/p/3920397.html][https_www.cnblogs.com_dolphin 青旅半醒/ 2022年05月15日 10:59/ 0 赞/ 249 阅读
相关 Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这 墨蓝/ 2022年03月16日 05:14/ 0 赞/ 262 阅读
相关 Java并发编程——CountDownLatch和CyclicBarrier 一、引言 在Java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier、Semaphore。下面就 野性酷女/ 2022年03月01日 15:00/ 0 赞/ 278 阅读
相关 Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这 我会带着你远行/ 2022年01月23日 10:59/ 0 赞/ 334 阅读
相关 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore > 参考[importnew][] CountDownLatch用法 `CountDownLatch`类位于`java.util.concurrent`包下,利用它 待我称王封你为后i/ 2021年11月16日 12:00/ 0 赞/ 424 阅读
还没有评论,来说两句吧...