Closed MatthewAden closed 3 weeks ago
因为 thread id 在分布式环境的多个进程中并不能保证一定是唯一的
我理解是用法问题,你把锁的实例丢弃了,你的 acquireLock 方法返回锁的实例就可以重入了
抱歉,我可能没有表达清楚我的意思,我的意思是或许可以像 redis 的客户端 redission 一样,利用一个全局单例每个客户端生成一个唯一 uuid,获取锁时用 thread id + uuid 构成唯一标识,这样即使像我们那样用也可以成功重入
id 有的呀,重入就是靠全局唯一 id 来支持的,看下面代码:
目前的我们这边的应用需要这样获取锁,相当于我们在上面封装了一层
当同一个线程先后调用 acquireLock 时,期待能够进行锁重入,但是由于会 new 出来两个不同的锁对象,acquire的 id 会不同,而 rheakv 锁重入的原理是进行如下对比
在我们的这个场景下锁重入会失效