zk的锁出现并发问题
老师我觉得zkLock您这里实现还是有些问题
我启一个应用,用浏览器两个窗口发送请求模拟多线程
spring 程序采用多线程debug
首先我让两个线程都来到创建完成临时节点这里
第一个线程,创建的znode是003

第二个线程,创建的node是004

zk上的数据分布

此时我让第一个线程先执行完成,session关闭,003数据节点被删除

但是此时第二个线程已经获取了003这个过时数据,尝试着给它加锁,没报任何异常,直接进入wait,这个wait已经没有事件去调用该zkLock这个object的notify()方法了,将一直处于waiting状态,没有任何线程去唤醒它。

老师,您看下是不是这样呢?
30
收起
正在回答
1回答
节点删除,会触发zk的监听器,在监听的删除事件中,会触发notifyall。
相似问题
登录后可查看更多问答,登录/注册
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星