回复
Zookeeper分布式锁实现Curator十一问(二)
pivoteic
发布于 2022-6-15 17:07
浏览
0收藏
attemptLock方法
先通过driver的createsTheLock去创建节点。
从这里看出,创建的节点类型是临时顺序节点,创建成功之后,就会返回当前创建的节点。
节点创建成功之后,会调用internalLockLoop方法来加锁。
通过getSortedChildren方法获取排好序的子节点,然后获取当前的节点名称,再通过 driver.getsTheLock判断当前的节点有没有加锁成功,返回一个PredicateResults判断的结果,这里面存的就是否加锁成功的信息。
第一次加锁,那么到这里就加锁成功了。之后就会封装一个LockData对象,放入threadData 的map中。
加锁的流程如下图:
四、如何实现可重入加锁
上文加锁的时候提到了,当第一次加锁成功之后,会往threadData放入该加锁的线程对应的LockData。
文章转自公众号:三友的java日记
标签
已于2022-6-15 17:07:11修改
赞
收藏
回复
相关推荐