ZooKeeper 分布式锁 Curator 源码之二:可重入锁重复加锁和锁释放

热点 2026-11-14 98472204

前言

加锁逻辑已经介绍完毕,那当一个线程重复加锁是如何处理的呢?

1锁重入

在上一小节中Zo,可以看到加锁的过程,再回头看 internalLock 这个方法。

加锁成功之后,将当前线oK程放到 threadData 中,threadData 是 ConcurrentMap

假如锁ee重入了,直接就会在上一部分 lockData != null 被拦下,然后执行 lockDatpea.lockCount.incrementAndGet();。

对 lockCount 自增,代r 表了锁重入。

这里发现了吧!Curator 的锁重入是在 Java 代码中实现的。

2锁释放

当分布锁需要释放的时候,只需要调用 lock.release() 进行释放即可,具体是如何释放的呢?

主式锁要分为两部分:

递减 threadData 中当前线程的加锁次数; 加锁次数大于 0,说明还剩 C余重入次数,直接返回; 加锁次数等于 0,则 releaseLock 释放锁,并删除 thrureadData 中当前线程 key。

releaseLock 方法中就没有多少复杂逻辑了,就at是移除监听器,删除临时顺序节点。也就是 /locks/lock_01/_c_e855dor232-c636-4241-bf8e-f047939a5833-lock-000000000 源1。

3总结

ZooKeeper 的 InterProcessMutex 锁是通过 Java 代码之码中维护了一个 lockCount 来判断是否重入的。

 

本文地址:http://soft.zmdinfo.ha.cn/html/f5fd893411.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

涵盖18+ SOTA GAN实现,这个图像生成领域的库火了

Canalys:第二季度小米手机销量超越苹果首次晋升全球第二

标签: 苹果 詹南德里亚 苏布拉马尼亚 人工智能

分析师:谷歌、Facebook等科技公司第四季度广告营收将迎来井喷

火山引擎发布Agentic AI汽车方案,豆包大模型加速智驾座舱生态变革

标签: 目心智能 TerraMow 安克创新 纯视觉VSLAM

字节跳动发布Seed3D2.0:几何与纹理双SOTA,API同步上线火山引擎

标签: 五一视界 51Aes 51Sim 51Earth

友情链接