Java并发编程:CountDownLatch、CyclicBarrier等工具使用示例 原创 矫情吗;* 2024-09-20 06:33 7阅读 0赞 Java的`CountDownLatch`, `CyclicBarrier`是两种常用的同步工具,用于多线程之间的协调和控制。 1. CountDownLatch CountDownLatch用于一个或多个线程等待其他线程完成特定操作后释放计数器。当计数器为0时,所有等待的线程会一起唤醒。 示例: ```java import java.util.concurrent.CountDownLatch; public class CountDownLatchExample { private CountDownLatch countDownLatch; public CountDownLatchExample(int count) { countDownLatch = new CountDownLatch(count); } // 线程1:计数,当计数为0时唤醒。 public void thread1() throws InterruptedException { for (int i = 0; i < 5; i++) { countDownLatch.countDown(); // 减少计数 System.out.println("Thread 1: " + i); } countDownLatch.await(); // 等待计数为0,唤醒 } // 线程2:等待线程1完成 public void thread2() throws InterruptedException { countDownLatch.await(); // 等待线程1计数为0 System.out.println("Thread 2: All done."); } public static void main(String[] args) { CountDownLatchExample example = new CountDownLatchExample(5); new Thread(example::thread1).start(); new Thread(example::thread2)).start(); } } ``` 2. CyclicBarrier CyclicBarrier用于一组等待某个事件完成后一起前进的线程。当第一个线程到达屏障时,所有后续到达的线程都会被阻塞,直到有线程成功通过屏障。 示例: ```java import java.util.concurrent.CyclicBarrier; public class CyclicBarrierExample { private CyclicBarrier cyclicBarrier; public CyclicBarrierExample(int barrierSize) { cyclicBarrier = new CyclicBarrier(barrierSize); } // 线程1:到达屏障,阻塞后续线程。 public void thread1() throws InterruptedException { try { cyclicBarrier.await(); // 等待通过屏障 System.out.println("Thread 1: All done."); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { CyclicBarrierExample example = new CyclicBarrierExample(5); new Thread(example::thread1)).start(); } } ``` 以上就是Java并发编程中`CountDownLatch`和`CyclicBarrier`两种工具的使用示例。 文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。
相关 Java并发编程:CountDownLatch、CyclicBarrier等工具使用示例 Java的`CountDownLatch`, `CyclicBarrier`是两种常用的同步工具,用于多线程之间的协调和控制。 1. CountDownLatch Coun 矫情吗;*/ 2024年09月20日 06:33/ 0 赞/ 8 阅读
相关 并发控制:Java并发工具类(如Semaphore,CountDownLatch等)的使用示例? Java中的并发工具类主要是用于管理线程间的协作,防止数据竞争。以下是一些常用的并发工具类及其使用示例: 1. `Semaphore`(信号量):表示在同一时刻允许的最多线程 谁借莪1个温暖的怀抱¢/ 2024年09月19日 09:45/ 0 赞/ 13 阅读
相关 Java并发编程:锁、条件变量等工具使用误区解析 在Java并发编程中,锁(Synchronized)、条件变量(Condition)等工具是实现线程同步和通信的重要手段。但是使用过程中容易出现一些误区,以下是常见误区的解析: 我就是我/ 2024年09月18日 15:12/ 0 赞/ 6 阅读
相关 Java并发编程:Lock接口使用示例 在Java的并发编程中,`Lock`接口是JDK提供的一种资源同步方式。它提供了比`Semaphore`更细粒度的锁控制。 下面是一个简单的`Lock`接口使用示例: `` 喜欢ヅ旅行/ 2024年09月11日 21:03/ 0 赞/ 14 阅读
相关 深入理解Java并发工具:CountDownLatch、CyclicBarrier等示例 在Java中,CountDownLatch和CyclicBarrier是两个常用的并发工具,用于协调多个线程的执行。 1. CountDownLatch CountDown 拼搏现实的明天。/ 2024年09月10日 04:57/ 0 赞/ 23 阅读
相关 并发控制挑战:Java多线程编程中,锁、信号量等同步工具使用示例 在Java多线程编程中,同步工具如锁(synchronized关键字)和信号量(Semaphore类)主要用于防止数据竞争和提高资源利用率。 1. 锁(synchronize 浅浅的花香味﹌/ 2024年09月06日 00:51/ 0 赞/ 14 阅读
相关 【Java并发编程】ThreadLocal(一):使用示例 > ThreadLocal 系列: > > [【Java并发编程】ThreadLocal(一):使用示例][Java_ThreadLocal] > [【Java并 雨点打透心脏的1/2处/ 2022年11月12日 08:29/ 0 赞/ 125 阅读
相关 Java并发编程工具之countdownlatch示例 countdownlatch允许一个或多个线程等待其他线程的完成。 例如以下代码,输出的结果不是固定的,有可能是312,也有可能是123,因为main线程和new threa ╰半夏微凉°/ 2022年05月21日 08:54/ 0 赞/ 200 阅读
还没有评论,来说两句吧...