作家
登录

基于Zookeeper的分布式锁

作者: 来源: 2017-10-24 13:07:50 阅读 我要评论

  •         synchronized(this) 
  •         { 
  •             try  
  •             { 
  •                 //这里应用getData()接口而不是checkExists()是因为,如不雅前一个子节点已经被删除了那么会抛出异常并且不会设置事宜监听器,而checkExists固然也可以获取到节点是否存在的信息然则同时设置了监听器,这个监听器其实永远不会触发,对于zookeeper来说属于资本泄漏 
  •                 client.getData().usingWatcher(watcher).forPath(previousSequencePath); 
  •  
  •                 //如不雅设置了壅塞等待的时光 
  •                 if ( millisToWait != null ) 
  •                 { 
  •                     millisToWait -= (System.currentTimeMillis() - startMillis); 
  •                     startMillis = System.currentTimeMillis(); 
  •                     if ( millisToWait <= 0 ) 
  •                     { 
  •                         doDelete = true;    // 等待时光达到,删除对应的子节点 
  •                         break; 
  •                     } 
  •                      
  •                     //等待响应的时光 
  •                     wait(millisToWait); 
  •                 } 
  •                 else 
  •                 { 
  •                    //永远等待 
  •                     wait(); 
  •                 } 
  •             } 
  •             catch ( KeeperException.NoNodeException e )  
  •             { 
  •                 //膳绫擎应用getData来设置监听器时,如不雅前一个子节点已经被删除那么会抛出NoNodeException,只须要自旋一次即可,无需额外处理 

      推荐阅读

      一文读懂深度学习与机器学习的差异

    沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散!“计算机法度榜样可以在给定某种类其余义务 T 和机能度量 P 下进修经验 E ,如不雅其在义务 T 中的机能正好可以用 P>>>详细阅读


    本文标题:基于Zookeeper的分布式锁

    地址:http://www.17bianji.com/lsqh/38128.html

  • 关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)