zookeeper如何实现竞争锁
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章给大家分享的是有关zookeeper如何实现竞争锁的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。package com.hgs.sharelocks;import
千家信息网最后更新 2025年01月24日zookeeper如何实现竞争锁
这篇文章给大家分享的是有关zookeeper如何实现竞争锁的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
package com.hgs.sharelocks;import java.util.Collections;import java.util.List;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.Watcher.Event.EventType;import org.apache.zookeeper.ZooDefs.Ids;import org.apache.zookeeper.ZooKeeper;public class ZKsharelocks {private ZooKeeper zk = null; private final static String connectString = "192.168.6.131:2181,192.168.6.132:2181,192.168.6.133:2181"; private final static int sessionTimeout = 2000; private final static String parentNode="/servers"; private final static String subNode="/sub"; private volatile String myPath = null; private boolean lockflag = false;public static void main(String[] args) throws Exception {ZKsharelocks sl = new ZKsharelocks();sl.getConnect();Thread.sleep(Long.MAX_VALUE);}public void getConnect() throws Exception{//创建实例zk = new ZooKeeper(connectString, sessionTimeout, new Watcher() {@Overridepublic void process(WatchedEvent event) {//判断事件的类型以及路径是否是业务路径if(event.getType()==EventType.NodeChildrenChanged&&event.getPath().equals(parentNode)) {Listinchild = null; try { //得到子节点,继续监听 inchild = zk.getChildren(parentNode, true); //排序 Collections.sort(inchild); //判断返回的时间路径不是null并且最小的子路经是当天路径 if(myPath != null&&inchild.size()>0&&inchild.indexOf(myPath.substring(parentNode.length()+1))==0) { doSomthing(); Thread.sleep(2000); myPath=zk.create(parentNode+subNode, null, Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL); }} catch (Exception e) {e.printStackTrace();}}}});//首先创建一个临时的序列的条目myPath=zk.create(parentNode+subNode, null, Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);//得到父节点下面的子目录数并进行监听List childs = zk.getChildren(parentNode, true);//判断进入到的时候是否只有自己,如果只有自己则可以做业务逻辑if(childs.size()==1) {//业务方法,在业务方法内有删除myPath条目的操作doSomthing();//删除完成后继续myPath=zk.create(parentNode+subNode, null, Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);}}public void doSomthing() throws Exception {System.out.println("get the lock..."+Thread.currentThread().getName());//得到锁完成业务后,删除持有的锁,即删除该条目zk.delete(myPath, -1);}}
感谢各位的阅读!关于"zookeeper如何实现竞争锁"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
业务
路径
条目
竞争
内容
只有
方法
更多
篇文章
节点
监听
不错
实用
最小
事件
子目
子目录
实例
序列
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
抓好网络安全工作标语
antserver服务器
服务器怎么改成显示器
云服务器网络延迟优化
南京软件开发培训推荐
格力软件开发应届生待遇
汪涛数据库
深圳IT外软件开发公司
数据库中去掉加密性
东南服务器
湖北海惠网络技术有限公司
互联网软件和科技公司
ps5港版服务器在哪
宿州网络安全考试学习
益阳软件开发外包公司
怀化软件开发中专技校
数据库对事务的作用
不履行安网络安全保护义务的
用户授权数据存入云数据库
java数据库对象列表转字符型
云服务器网络延迟优化
2012网络安全年会
仕德伟集团苏州网讯网络技术
2020网络安全宣传周上海
服务器防护ddos攻击
长沙管理冷库软件开发
mc多人游戏服务器
网络安全靠人民策划书
网络技术员年终工作总
银联商务 软件开发群面