- Hazelcast 教程
- Hazelcast - 主页
- Hazelcast - 简介
- Hazelcast - 设置
- Hazelcast - 第一个应用程序
- Hazelcast - 配置
- 设置多节点实例
- Hazelcast - 数据结构
- Hazelcast - 客户端
- Hazelcast - 序列化
- Hazelcast 高级
- Hazelcast - Spring 集成
- Hazelcast - 监控
- Map Reduce 及聚合
- Hazelcast - 集合监听器
- 常见陷阱及性能技巧
- Hazelcast 的有用资源
- Hazelcast - 快速指南
- Hazelcast - 有用资源
- Hazelcast - 讨论
Hazelcast - ICountDownLatch
java.util.concurrent.CountDownLatch 为线程提供了等待方式,而其他线程在 JVM 的多线程环境中完成一组操作。
类似地,ICountDownLatch 提供了 Java CountDownLatch 的分布式版本。它提供了类似的功能:setCount、countDown、await 等。
ICountDownLatch 和 Java CountDownLatch 之间的一个主要区别在于 Java CountDownLatch 提供了对单个 JVM 中线程的关键部分的保护,而 ICountDownLatch 为单个 JVM 和多个 JVM 中的线程提供了同步。
ICountDownLatch 有一个同步备份,这意味着如果我们有设置,例如,运行 5 个 JVM,则只有两个 JVM 将持有此锁定。
设置锁定及等待锁定
让我们在两个 JVM 上执行以下代码。一个上运行主代码,另一个上运行工作线程代码。此代码旨在让工作线程等待,直到主线程完成。
示例
第一部分是创建锁定并进行倒计时的主代码。
public static void main(String... args) throws IOException, InterruptedException { //initialize hazelcast instance HazelcastInstance hazelcast=Hazelcast.newHazelcastInstance(); // create a lock ICountDownLatch countDownLatch=hazelcast.getCountDownLatch("count_down_1"); System.out.println("Setting counter"); countDownLatch.trySetCount(2); Thread.sleep(2000); System.out.println("Counting down"); countDownLatch.countDown(); Thread.sleep(2000); System.out.println("Counting down"); countDownLatch.countDown(); System.exit(0); }
第二部分是创建锁定并进行倒计时的工作线程代码。
public static void main(String... args) throws IOException, InterruptedException { //initialize hazelcast instance HazelcastInstance hazelcast = Hazelcast.newHazelcastInstance(); // create a lock ICountDownLatch countDownLatch=hazelcast.getCountDownLatch("count_down_1"); countDownLatch.await(5000, TimeUnit.MILLISECONDS); System.out.println("Worker successful"); System.exit(0); }
输出
代码的输出显示工作线程仅在倒计时完成到 0 之后才打印。
Setting counter Counting down Counting down Worker successful
有用方法
序号 | 函数名称及说明 |
---|---|
1 | await() 等待锁定的计数达到零再继续 |
2 | countDown() 递减倒计时锁定 |
3 | trySetCount(int count) 设置锁定的计数 |
4 | getCount() 获取锁定的当前计数 |
hazelcast_data_structures.htm
广告