91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

蓝山县| 内丘县| 马山县| 容城县| 沙坪坝区| 应城市| 博客| 色达县| 平远县| 临城县| 靖宇县| 临泉县| 精河县| 响水县| 禹城市| 和硕县| 江油市| 柞水县| 托克托县| 阜宁县| 河间市| 韶山市| 皮山县| 台前县| 阿瓦提县| 长春市| 弋阳县| 化州市| 白城市| 河津市| 兰州市| 宜宾市| 蓬溪县| 林甸县| 密山市| 崇文区| 富锦市| 连城县| 师宗县| 浙江省| 修水县|