1. 初始化 init()
使用命名空间,创建zk锁的总节点(永久节点),并添件事件监听。
2. 获取锁 getLock()
死循环,当请求获得锁成功(创建临时节点)后,退出循环。
创建失败,重新设置同步资源值,阻塞线程
3. 释放锁 releaseLock()
检查当前节点,并删除。
4. 为总节点添加事件监听addWatcherToLock(String path)
如果监听到子节点的事件是删除,并且是预期路径,zkLatch.countDown();
还未考虑到锁粒度的优化。。。
1. 初始化 init()
使用命名空间,创建zk锁的总节点(永久节点),并添件事件监听。
2. 获取锁 getLock()
死循环,当请求获得锁成功(创建临时节点)后,退出循环。
创建失败,重新设置同步资源值,阻塞线程
3. 释放锁 releaseLock()
检查当前节点,并删除。
4. 为总节点添加事件监听addWatcherToLock(String path)
如果监听到子节点的事件是删除,并且是预期路径,zkLatch.countDown();
还未考虑到锁粒度的优化。。。