1. 首页 > 电脑 >

CountDownLatch:Java 并发中的同步原语

前言

CountDownLatch:Java 并发中的同步原语CountDownLatch:Java 并发中的同步原语


Java 并发编程中,协调和同步多个线程至关重要。CountDownLatch 是一个实用的工具,用于确保在所有参与线程完成特定任务之前,主线程继续执行。

CountDownLatch 使用

CountDownLatch 是一种同步机制,通过计数器来协调线程。它提供以下主要方法:

await(): 阻塞当前线程,直到计数器值变为 0。 countDown(): 减少计数器的值。 getCount(): 获取计数器的当前值。

工作原理

CountDownLatch 初始化时需要指定一个计数器值,表示必须等待的线程数量。当每个线程完成其任务时,它会调用 countDown() 方法,从而减少计数器值。当计数器值达到 0 时,await() 方法被唤醒,并且主线程可以继续执行。

示例代码

以下示例展示了 CountDownLatch 的使用:

```java import java.util.concurrent.CountDownLatch;

public class CountDownLatchExample { private static final int THREAD_COUNT = 5; private static CountDownLatch latch = new CountDownLatch(THREAD_COUNT);

public static void main(String[] args) { for (int i = 0; i < THREAD_COUNT; i++) { new Thread(new Runnable() { @Override public void run() { // 线程任务 System.out.println("线程 " + Thread.currentThread().getName() + " 完成任务"); latch.countDown(); } }).start(); }

try { latch.await(); // 等待所有线程完成任务 System.out.println("所有线程已完成任务,主线程继续执行"); } catch (InterruptedException e) { e.printStackTrace(); } } } ```

优点

确保所有线程在继续执行之前完成任务。 可用于防止数据竞态条件。 易于使用和理解。

局限性

不支持中断等待线程。 计数器值不能动态增加。

总结

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 12345678@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息