redisson如何正确加锁?

锁竟然冲突了,两个请求同时获取到了锁,请问可以怎么避免吗

RLock lock = redisson.getLock(String.format(REWARD_CARD_LOCK_KEY, 2));
try {
    //尝试加锁,最多等待10秒,上锁以后10秒自动解锁
    if (lock.tryLock(10,10, TimeUnit.SECONDS)) {
        try {
            //处理
            logger.info("tryLock thread---{}, lock:{}", Thread.currentThread().getId(), lock);
        } catch (Exception e) {
        } finally {
            //解锁
            lock.unlock();
        }
    }
} catch (InterruptedException e) {
    //处理
    //保留中断发生的证据,以便调用栈中更高层的代码能知道中断,并对中断作出响应
    Thread.currentThread().interrupt();
}

 

在函数或者语句块加一个同步处理机制看看。

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

已解决,log中多次获取到锁是因为在trylock之前,也就是没lock的时候当然可以多次获取到未lock的锁。谢谢各位

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y