ZooKeeper 分布式锁 Curator 源码之二:可重入锁重复加锁和锁释放
前言
加锁逻辑已经介绍完毕,那当一个线程重复加锁是如何处理的呢?
1锁重入
在上一小节中Zo,可以看到加锁的过程,再回头看 internalLock 这个方法。
加锁成功之后,将当前oK线程放到 threadData 中,threadData 是 ConcurrentMap
假ee如锁重入了,直接就会在上一部分 lockData != null 被拦下,然后执行 lockDapeta.lockCount.incrementAndGet();。
对 lockCount 自增r ,代表了锁重入。
这里发现了吧!Curator 的锁重入是在 Java 代码中实现的。
2锁释放
当分布锁需要释放的时候,只需要调用 lock.release() 进行释放即可,具体是如何释式锁放的呢?
主要分为两部分:
递减 threadData 中当前线程的加锁次数; 加锁次数大于 0, C说明还剩余重入次数,直接返回; 加锁次数等于 0,则 releaseLock 释放锁,并删除 threuradData 中当前线程 key。
releaseLock 方法中就没有多少复杂逻辑了,就是移除at监听器,删除临时顺序节点。也就是 /locks/lock_01/_c_e855d232-c6or36-4241-bf8e-f047939a5833-lock-0000000001。
3 源总结
ZooKeeper 的 InterProcessMutex 锁是通过 Java 代码中维码之护了一个 lockCount 来判断是否重入的。
相关文章
云梦级2月6日云梦级消息,春运开启,返乡探亲出游等需求集中释放。在主管部门指导下,滴滴全面启动保障工作:召开春运安全保障部署会,从多个安全维度开展风险识别与隐患排查,组织安全应急演练,针对春运场景加强2026-11-16
冷冻梭子蟹粥的做法?主料3种梭子蟹2个大米150g香菇适量辅料4种大蒜适量姜适量细香葱适量高汤适量调料5种色拉油适量盐适量胡椒粉适量香油适量料酒适量烹饪步。可以用冰冻梭子蟹煮粥吗-业百科冰冻梭子蟹相较2026-11-16
360发布全球首款L2-L4全栈智能体平台!政企AI转型迎来“开箱即用”时代
当大模型热潮逐渐退去,真正的产业智能化竞赛才刚刚开始。10月28日,360集团在北京高调发布其企业级智能体平台,宣布推出全球首个覆盖L2至L4全阶段能力的智能体操作系统,并同步升级其核心引擎——SEA2026-11-16
云计算核心技术Docker教程:Docker Swarm 模式管理集群列出节点
要从docker node ls管理器节点查看 swarm 运行中的节点列表: $ docker node ls AVAILABILITY列显示调度程序是否可以将任务分配给节点: Active 意味着2026-11-16
使用 Python-on-whales 从 Python 调用 Docker CLI
随着 Docker 使用的增加,用户希望从 shell 以外的编程语言调用 Docker。从 Python 使用 Docker 的一种流行方法是使用docker-py。这个库取得了巨大的成功,甚至do2026-11-16
腾讯AI Lab首创并行思维框架,让大模型解锁全新推理方式!
随着 AI 技术的不断进步,如何让大模型具备 “并行思维” 能力,成为了研究者们关注的热点话题。最近,腾讯 AI Lab 联合多所高校的研究团队推出了一个名为 Parallel-R1的全新强化学习(R2026-11-16

最新评论