- 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
廣告