亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ZooKeeper共享鎖怎么創建

發布時間:2021-12-23 12:01:26 來源:億速云 閱讀:137 作者:iii 欄目:云計算

這篇文章主要介紹“ZooKeeper共享鎖怎么創建”,在日常操作中,相信很多人在ZooKeeper共享鎖怎么創建問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”ZooKeeper共享鎖怎么創建”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

眾所周知,在Java開發中,要創建一個單進程鎖非常簡單,使用JDK中自帶的java.util.concurrent.locks.Lock接口即可實現鎖的功能。

如今已經到了大數據、云的時代,而這種鎖已經無法滿足集群服務間鎖的需求了,本文將簡單說下如何使用ZooKeeper來實現共享鎖功能。至于什么是共享鎖呢?理解起來也很簡單:就是指在多個實例中使用同一把鎖。(我好像廢話了……)

同樣閃亮登場的還是我們的Curator Framework,它封裝了各種場景的鎖,比如:共享鎖、讀寫鎖、可撤銷鎖等。

LockStartup.java

package org.bigmouth.common.zookeeper.shared;
 
import java.util.concurrent.TimeUnit;
 
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.recipes.locks.InterProcessSemaphoreMutex;
import org.bigmouth.common.zookeeper.config.ZooKeeperFactory;
 
 
public class LockStartup {
 
    public static void main(String[] args) throws Exception {
        CuratorFramework client = ZooKeeperFactory.get(); // ZooKeeperFactory在上一篇文章《ZooKeeper學習筆記—配置管理》中有
        final InterProcessSemaphoreMutex processSemaphoreMutex = new InterProcessSemaphoreMutex(client, "/lock");
        printProcess(processSemaphoreMutex);
         
        System.out.println("Starting get lock...");
        boolean flag = processSemaphoreMutex.acquire(12, TimeUnit.SECONDS);
        System.out.println(flag ? "Getting lock successful." : "Getting failed!");
         
        printProcess(processSemaphoreMutex);
         
        Thread.sleep(20 * 1000);
         
        if (processSemaphoreMutex.isAcquiredInThisProcess()) {
            processSemaphoreMutex.release();
        }
        printProcess(processSemaphoreMutex);
        client.close();
    }
     
    private static void printProcess(final InterProcessSemaphoreMutex processSemaphoreMutex) {
        // 在本進程中鎖是否激活(是否正在執行)
        System.out.println("isAcquiredInThisProcess: " + processSemaphoreMutex.isAcquiredInThisProcess());
    }
 
}



啟動LockStartup,得到如下結果:

ZooKeeper共享鎖怎么創建

接著再啟動一個LockStartup實例,結果是無法獲取到鎖。程序還是會等待12秒,如果12秒后仍然無法獲取到鎖則結束:

ZooKeeper共享鎖怎么創建

如果我們把處理時間設置為10秒,等待時間為12秒。那么當第一個進程釋放后,第二個進程將會獲取到鎖。

Thread.sleep(10 * 1000);

還有適合其他場景的共享鎖就不一一做例子了,使用起來都類似。可以看下接口org.apache.curator.framework.recipes.locks.InterProcessLock的實現類。

ZooKeeper共享鎖怎么創建

到此,關于“ZooKeeper共享鎖怎么創建”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節
推薦閱讀:
  1. ZooKeeper Install
  2. Zookeeper

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇巴县| 上栗县| 惠州市| 普宁市| 民权县| 清原| 白城市| 重庆市| 惠州市| 漳平市| 无极县| 晴隆县| 霞浦县| 阿图什市| 绥宁县| 房产| 日照市| 康马县| 黑山县| 通许县| 和静县| 迁西县| 政和县| 光泽县| 昆山市| 定南县| 淮阳县| 南宁市| 商城县| 玉山县| 敦化市| 大宁县| 栾城县| 纳雍县| 三明市| 扎赉特旗| 安国市| 安龙县| 青州市| 安康市| 邹平县|