代码示例如下
设置超时时间:为了finally代码块执行前线程卡死没有释放锁,防止死锁。
clientId作用:给每个线程取ID,setnx时候value保存,每个线程和锁ID绑定。
finally里面判断作用:只有当锁ID和线程ID一样时候才释放锁,防止当本线程没有执行完,但是到了超时时间,本线程锁解锁了,然后其他线程进来加锁,把其他线程加的锁给解锁了。
redisson实现:
代码示例如下
设置超时时间:为了finally代码块执行前线程卡死没有释放锁,防止死锁。
clientId作用:给每个线程取ID,setnx时候value保存,每个线程和锁ID绑定。
finally里面判断作用:只有当锁ID和线程ID一样时候才释放锁,防止当本线程没有执行完,但是到了超时时间,本线程锁解锁了,然后其他线程进来加锁,把其他线程加的锁给解锁了。
redisson实现: