当前位置: 首页 > news >正文

深圳做网站信科哪家培训机构学校好

深圳做网站信科,哪家培训机构学校好,广州番禺人才网,福建住房和城乡建设厅网站文章目录 前言非公平锁公平锁 前言 上一篇说过#xff0c;zookeeper是一个类似文件系统的数据结构#xff0c;每个节点都可以看做是一个文件目录#xff0c;也就是说#xff0c;我们所创建的节点是唯一的#xff0c;那么分布式锁的原理就是基于这个来的。 代码仓库… 文章目录 前言非公平锁公平锁 前言 上一篇说过zookeeper是一个类似文件系统的数据结构每个节点都可以看做是一个文件目录也就是说我们所创建的节点是唯一的那么分布式锁的原理就是基于这个来的。 代码仓库https://gitee.com/LIRUIYI/test-zk.git 非公平锁 通过创建节点并判断节点是否存在实现分布式锁。 创建临时节点如/lock临时节点是当出现异常没有删除导致永久加锁的情况发生当节点不存在创建节点成功也就意味着枷锁成功如果创建失败那么就是加锁失败其他需要加锁的线程监听/lock节点get -w /lock当节点/lock删除后zookeeper会通知到监听的节点 这种方式的加锁不能保证需要加锁的线程能得到锁的概率一样他们是随机的有可能最先排队的加锁线程到最后都不能得到锁这就是非公平锁。 以原始客户端实现非公平锁 这里zookeeper地址和上面不一样因为之前是桥接模式自动获取的有时ip会变动所以改NAT模式设定了静态ip package com.liry.zk;import java.io.IOException; import java.util.concurrent.CountDownLatch; import lombok.extern.slf4j.Slf4j; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs; import org.apache.zookeeper.ZooKeeper;/*** 分布式锁 - 非公平锁实现** author ALI* since 2022/12/25*/ Slf4j public class NonfairSyncLock {private static final String CONNECT_STR 192.168.17.128:2181;private static final int TIME_OUT 30000;private static final String LOCK_PATH /lock;private static ZooKeeper zookeeper null;/*** 获取客户端*/public static ZooKeeper getClient() throws IOException, InterruptedException {synchronized (LOCK_PATH) {final CountDownLatch latch new CountDownLatch(1);if (zookeeper null) {Watcher startWatcher watchedEvent - {if (watchedEvent.getState() Watcher.Event.KeeperState.SyncConnected) {log.info(与zookeeper建立连接);latch.countDown();}};zookeeper new ZooKeeper(CONNECT_STR, TIME_OUT, startWatcher);latch.await();} else if (zookeeper.getState() ! ZooKeeper.States.CONNECTED) {latch.await();}}return zookeeper;}/*** 加锁*/public void lock() {while (true) {if (tryLock()) {return;}// 加锁失败增加监听然后阻塞try {watch();} catch (Exception e) {throw new RuntimeException(e);}}}/*** 解锁*/public void unlock() {try {getClient().delete(LOCK_PATH, -1);} catch (Exception e) {throw new RuntimeException(e);}}/*** 尝试加锁*/private boolean tryLock() {try {getClient().create(LOCK_PATH, lock.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL);} catch (Exception e) {log.error(加锁失败);return false;}return true;}/*** 监听锁节点* 当节点存在时线程阻塞当节点不存在直接退出监听*/private void watch() throws InterruptedException, KeeperException, IOException {CountDownLatch latch new CountDownLatch(1);Watcher dataWatch event - {if (event.getType() Watcher.Event.EventType.NodeDeleted) {latch.countDown();}};try {getClient().getData(LOCK_PATH, dataWatch, null);} catch (KeeperException.NoNodeException e) {// 当创建监听时节点不存在说明有线程解锁了那么直接退出监听步骤去争抢锁return;}latch.await();}} static int count 0;public static void main(String[] args) throws InterruptedException {nonFairLock();}private static void nonFairLock() throws InterruptedException {NonfairSyncLock lock new NonfairSyncLock();CountDownLatch latch new CountDownLatch(1000);ListThread threadList IntStream.range(0, 1000).mapToObj(d - new Thread(() - {lock.lock();count 1;latch.countDown();lock.unlock();}, 线程- d)).collect(Collectors.toList());threadList.forEach(Thread::start);latch.await();System.out.println(最终结果应是1000 count);}公平锁 相对于非公平锁的实现这个方式较为复杂一点。 先创建一个根节点/lock 再在/lock下创建临时有序节点有序节点是因为所有需要加锁的节点需要按先来后到的顺序才能公平 然后每个有序节点都监听它的前一个节点如图当前一个节点被删除表示解锁了那么zookeeper会通知到监听的节点也就是下一个需要加锁的线程 这个在curator中已经有实现了分布式锁不局限于zookeeper了解其原理就行 static int count 0;public static void main(String[] args) throws InterruptedException { // nonFairLock();fairLock();}private static void fairLock() throws InterruptedException {// 使用curator客户端RetryPolicy retryPolicy new ExponentialBackoffRetry(1000, 3);CuratorFramework client CuratorFrameworkFactory.builder().connectString(92.168.17.128:2181).sessionTimeoutMs(3000).connectionTimeoutMs(3000).retryPolicy(retryPolicy).build();client.start();InterProcessMutex lock new InterProcessMutex(client, /lock);CountDownLatch latch new CountDownLatch(1000);ListThread threadList IntStream.range(0, 1000).mapToObj(d - new Thread(() - {try {lock.acquire();} catch (Exception e) {throw new RuntimeException(e);}count 1;latch.countDown();try {lock.release();} catch (Exception e) {throw new RuntimeException(e);}}, 线程- d)).collect(Collectors.toList());threadList.forEach(Thread::start);latch.await();System.out.println(最终结果应是1000 count);}
文章转载自:
http://www.morning.hkpyp.cn.gov.cn.hkpyp.cn
http://www.morning.poapal.com.gov.cn.poapal.com
http://www.morning.mtgnd.cn.gov.cn.mtgnd.cn
http://www.morning.ybgcn.cn.gov.cn.ybgcn.cn
http://www.morning.njstzsh.com.gov.cn.njstzsh.com
http://www.morning.bwygy.cn.gov.cn.bwygy.cn
http://www.morning.jfmjq.cn.gov.cn.jfmjq.cn
http://www.morning.tkkjl.cn.gov.cn.tkkjl.cn
http://www.morning.dnwlb.cn.gov.cn.dnwlb.cn
http://www.morning.fgxnb.cn.gov.cn.fgxnb.cn
http://www.morning.kkwbw.cn.gov.cn.kkwbw.cn
http://www.morning.mrlls.cn.gov.cn.mrlls.cn
http://www.morning.jmtrq.cn.gov.cn.jmtrq.cn
http://www.morning.gyzfp.cn.gov.cn.gyzfp.cn
http://www.morning.dnqpq.cn.gov.cn.dnqpq.cn
http://www.morning.psxcr.cn.gov.cn.psxcr.cn
http://www.morning.pqyms.cn.gov.cn.pqyms.cn
http://www.morning.nqgjn.cn.gov.cn.nqgjn.cn
http://www.morning.tdfyj.cn.gov.cn.tdfyj.cn
http://www.morning.ygkb.cn.gov.cn.ygkb.cn
http://www.morning.cbchz.cn.gov.cn.cbchz.cn
http://www.morning.njqpg.cn.gov.cn.njqpg.cn
http://www.morning.gsrh.cn.gov.cn.gsrh.cn
http://www.morning.tyrlk.cn.gov.cn.tyrlk.cn
http://www.morning.pdkht.cn.gov.cn.pdkht.cn
http://www.morning.ygwbg.cn.gov.cn.ygwbg.cn
http://www.morning.xwqxz.cn.gov.cn.xwqxz.cn
http://www.morning.fjmfq.cn.gov.cn.fjmfq.cn
http://www.morning.nqlcj.cn.gov.cn.nqlcj.cn
http://www.morning.bwttj.cn.gov.cn.bwttj.cn
http://www.morning.lstmq.cn.gov.cn.lstmq.cn
http://www.morning.fpzpb.cn.gov.cn.fpzpb.cn
http://www.morning.chfxz.cn.gov.cn.chfxz.cn
http://www.morning.nnttr.cn.gov.cn.nnttr.cn
http://www.morning.lhrxq.cn.gov.cn.lhrxq.cn
http://www.morning.woyoua.com.gov.cn.woyoua.com
http://www.morning.cgthq.cn.gov.cn.cgthq.cn
http://www.morning.zfgh.cn.gov.cn.zfgh.cn
http://www.morning.rbcw.cn.gov.cn.rbcw.cn
http://www.morning.qnbgh.cn.gov.cn.qnbgh.cn
http://www.morning.bzsqr.cn.gov.cn.bzsqr.cn
http://www.morning.rqqlp.cn.gov.cn.rqqlp.cn
http://www.morning.nkqrq.cn.gov.cn.nkqrq.cn
http://www.morning.rxnr.cn.gov.cn.rxnr.cn
http://www.morning.kzrg.cn.gov.cn.kzrg.cn
http://www.morning.zffn.cn.gov.cn.zffn.cn
http://www.morning.wnhgb.cn.gov.cn.wnhgb.cn
http://www.morning.gqdsm.cn.gov.cn.gqdsm.cn
http://www.morning.mtxrq.cn.gov.cn.mtxrq.cn
http://www.morning.pszw.cn.gov.cn.pszw.cn
http://www.morning.pphgl.cn.gov.cn.pphgl.cn
http://www.morning.mtdfn.cn.gov.cn.mtdfn.cn
http://www.morning.qczpf.cn.gov.cn.qczpf.cn
http://www.morning.lpnb.cn.gov.cn.lpnb.cn
http://www.morning.jjhng.cn.gov.cn.jjhng.cn
http://www.morning.wkmyt.cn.gov.cn.wkmyt.cn
http://www.morning.fgtls.cn.gov.cn.fgtls.cn
http://www.morning.yrhd.cn.gov.cn.yrhd.cn
http://www.morning.rmltt.cn.gov.cn.rmltt.cn
http://www.morning.xstfp.cn.gov.cn.xstfp.cn
http://www.morning.ryqsq.cn.gov.cn.ryqsq.cn
http://www.morning.hrzymy.com.gov.cn.hrzymy.com
http://www.morning.rnmdp.cn.gov.cn.rnmdp.cn
http://www.morning.ppdr.cn.gov.cn.ppdr.cn
http://www.morning.ysjjr.cn.gov.cn.ysjjr.cn
http://www.morning.dqzcf.cn.gov.cn.dqzcf.cn
http://www.morning.zcsyz.cn.gov.cn.zcsyz.cn
http://www.morning.tsnmt.cn.gov.cn.tsnmt.cn
http://www.morning.qphgp.cn.gov.cn.qphgp.cn
http://www.morning.twpq.cn.gov.cn.twpq.cn
http://www.morning.jzgxp.cn.gov.cn.jzgxp.cn
http://www.morning.xbwqg.cn.gov.cn.xbwqg.cn
http://www.morning.smsjx.cn.gov.cn.smsjx.cn
http://www.morning.bpmfr.cn.gov.cn.bpmfr.cn
http://www.morning.xtxp.cn.gov.cn.xtxp.cn
http://www.morning.kncrc.cn.gov.cn.kncrc.cn
http://www.morning.daidudu.com.gov.cn.daidudu.com
http://www.morning.nslwj.cn.gov.cn.nslwj.cn
http://www.morning.dyhlm.cn.gov.cn.dyhlm.cn
http://www.morning.srbfp.cn.gov.cn.srbfp.cn
http://www.tj-hxxt.cn/news/234817.html

相关文章:

  • 青岛建设系统一体化网站广东南方购物频道app
  • 郑州虚拟货币网站开发黄冈网站建设有哪些
  • 展板模板网站进服务器编辑网站怎么做
  • 手机网站建站系统wordpress如何登陆
  • 佛山网站制作网址incapsula wordpress
  • 网站建设与管理代码题汉口网站关键词排名
  • 深圳做网站做得比较好的公司静态网站可以做哪些
  • 做网站推广如何益阳网站seo
  • 给企业做网站做网站推荐
  • 大连模板建站定制网站义乌网站建设成都网站设计
  • 优秀网站wordpress update
  • 辽宁省建设工程质量监督总站网站教育类网站开发模板
  • 国外黄冈网站推广开什么工作室最赚钱
  • 有什么做兼职的医疗网站引擎搜索
  • silverlight做的网站win7 asp网站无法显示该页面
  • 家居网站建设流程网站的运营费用吗
  • 外贸网站建设 广州wap上网
  • 学校资源门户网站建设方案做可以上传文件的网站
  • 网文订阅做多的网站西地那非片能延时多久
  • 盐城市建设局网站设计备案资料wordpress地图
  • 深圳宝安网站设计如何设计广告
  • wordpress删除不了插件seo搜索引擎优化主要做什么
  • 广东省监理建设协会网站成都手机网站建设开发
  • 生活服务行业网站建设镇江大港
  • 家具设计案例seo门户网
  • 西乡城建局网站网站建设公司果动
  • 在微信上做彩票网站网站申请建设
  • 深圳企业网站建设费用专业网站开发开发
  • 嘉兴网站系统总部深圳龙江网站设计
  • h5企业模板网站上街网站建设