Java中的并发编程:CountDownLatch和CyclicBarrier案例 原创 悠悠 2024-09-20 19:57 50阅读 0赞 在Java的并发编程中,CountDownLatch和CyclicBarrier是两种常用的同步工具,用于协调多个线程的执行顺序。 1. CountDownLatch CountDownLatch是一个单向计数对象。当它的初始值为n时(n>0),每个等待该事件的线程都将被阻塞,直到latch的count减到0。 案例: ```java import java.util.concurrent.CountDownLatch; public class CountDownLatchExample { private final CountDownLatch countDownLatch = new CountDownLatch(3); public void task1() { System.out.println("Task 1 starts..."); try { countDownLatch.await(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Task 1 ends..."); } public void task2() { System.out.println("Task 2 starts..."); try { countDownLatch.await(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Task 2 ends..."); } public static void main(String[] args) { CountDownLatchExample example = new CountDownLatchExample(); Thread thread1 = new Thread(example::task1); Thread thread2 = new Thread(example::task2); thread1.start(); thread2.start(); try { // 等待所有线程执行完毕 thread1.join(); thread2.join(); } catch (InterruptedException e) { e.printStackTrace(); } } } ``` 在这个例子中,我们创建了两个任务(task1和task2),每个任务都会调用CountDownLatch的await()方法来等待count减到0。当所有线程执行完毕后,main方法会调用join()方法让当前线程等待其他线程完成。 2. CyclicBarrier CyclicBarrier是一个共享屏障,它允许多个线程同时到达一个临界点,但不能保证这些线程会被阻塞在临界点。当一个线程离开这个屏障时,所有后续到达的线程都会被阻塞,直到第一个线程再次通过屏障。 案例: ```java import java.util.concurrent.CyclicBarrier; public class CyclicBarrierExample { private final CyclicBarrier barrier = new CyclicBarrier(2); public void task1() throws Exception { System.out.println("Task 1 starts..."); barrier.await(); // 等待屏障 System.out.println("Task 1 ends..."); } public void task2() throws Exception { System.out.println("Task 2 starts..."); barrier.await(); // 等待屏障 System.out.println("Task 2 ends..."); } public static void main(String[] args) { CyclicBarrierExample example = new CyclicBarrierExample(); Thread thread1 = new Thread(example::task1)); Thread thread2 = new Thread(example::task2)); thread1.start(); thread2.start(); try { // 等待所有线程执行完毕 thread1.join(); thread2.join(); } catch (InterruptedException e) { e.printStackTrace(); } } } ``` 在这个例子中,我们也创建了两个任务(task1和task2),每个任务都会调用CyclicBarrier的await()方法来等待屏障。当所有线程执行完毕后,main方法会调用join()方法让当前线程等待其他线程完成。 文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。
相关 Java并发编程:CountDownLatch, CyclicBarrier 实战案例 Java的并发工具类主要分为CountDownLatch、CyclicBarrier和Semaphore等。以下我们将通过实战案例来理解它们的实际运用。 1. CountDo 朱雀/ 2024年10月24日 18:24/ 0 赞/ 32 阅读
相关 Java并发编程中,CountDownLatch和CyclicBarrier的区别 `CountDownLatch` 和 `CyclicBarrier` 都是 Java 并发编程中的同步工具,但它们的功能和使用场景有所不同: 1. **CountDownLa 拼搏现实的明天。/ 2024年10月19日 23:24/ 0 赞/ 24 阅读
相关 Java并发编程:CountDownLatch、CyclicBarrier实战案例 CountDownLatch和CyclicBarrier是Java中两种常用的同步工具,它们都用于线程之间的协调。 1. CountDownLatch(倒计时锁): - 定义 拼搏现实的明天。/ 2024年10月18日 09:54/ 0 赞/ 42 阅读
相关 Java中的并发编程:CountDownLatch和CyclicBarrier案例 在Java的并发编程中,CountDownLatch和CyclicBarrier是两种常用的同步工具,用于协调多个线程的执行顺序。 1. CountDownLatch Co 悠悠/ 2024年09月20日 19:57/ 0 赞/ 51 阅读
相关 Java并发编程:CountDownLatch和CyclicBarrier案例 在Java并发编程中,CountDownLatch和CyclicBarrier都是用于线程协调的同步工具。这里我们将通过两个实际案例来理解和使用它们。 1. **CountD 灰太狼/ 2024年09月10日 07:48/ 0 赞/ 66 阅读
相关 Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这 本是古典 何须时尚/ 2022年05月21日 05:10/ 0 赞/ 220 阅读
相关 Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore 原文出处: [海子][Link 1] 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和 梦里梦外;/ 2022年05月20日 02:41/ 0 赞/ 309 阅读
相关 Java并发编程——CountDownLatch、CyclicBarrier和Semaphore 本文转自:[https://www.cnblogs.com/dolphin0520/p/3920397.html][https_www.cnblogs.com_dolphin 青旅半醒/ 2022年05月15日 10:59/ 0 赞/ 286 阅读
相关 Java并发编程——CountDownLatch和CyclicBarrier 一、引言 在Java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier、Semaphore。下面就 野性酷女/ 2022年03月01日 15:00/ 0 赞/ 322 阅读
还没有评论,来说两句吧...