redisson锁 tryLock的使用及正确用法

redisson锁 tryLock的使用及正确用法方式一RLocklock=redissonClient.getLock(“Export:create:”+Context.get().getCorpId());try{if(lock.tryLock(5,10,TimeUnit.SECONDS)){//业务处理}else{Assert.isTrue(false,”排队中,请稍后重试!”);}}catch(InterruptedExceptione){.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

方式一
RLock lock = redissonClient.getLock("Export:create:" + Context.get().getCorpId());
try {
    if (lock.tryLock(5, 10, TimeUnit.SECONDS)) {
        //业务处理
    } else {
        Assert.isTrue(false, "排队中,请稍后重试!");
    }
} catch (InterruptedException e) {
    Assert.isTrue(false, "请勿重复操作!");
} finally {
    if (lock.isLocked()) {
        lock.unlock();
    }
}

方式二:
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();

}

public void testReentrantLock(RedissonClient redisson){

RLock lock = redisson.getLock(“anyLock”);
try{

// 1. 最常见的使用方法
//lock.lock();
// 2. 支持过期解锁功能,10秒钟以后自动解锁, 无需调用unlock方法手动解锁
//lock.lock(10, TimeUnit.SECONDS);
// 3. 尝试加锁,最多等待3秒,上锁以后10秒自动解锁
boolean res = lock.tryLock(3, 10, TimeUnit.SECONDS);
if(res){ //成功
// do your business
}
} catch (InterruptedException e) {

e.printStackTrace();
} finally {

lock.unlock();
}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183889.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 史上最好听的十首纯音乐推荐[通俗易懂]

    史上最好听的十首纯音乐推荐[通俗易懂]天然去雕饰,清水出芙蓉。不需要歌词我们就能感受到那或美丽忧伤,或轻灵欢快,或激昂艰辛的情绪。思绪随着旋律而起伏,心中莫名就有一种感动,无法用词语表达,无言却胜过万语千言。一、《LuvLetter》

    2022年8月4日
    3
  • 二叉树的五个性质「建议收藏」

    二叉树的五个性质「建议收藏」性质1:在二叉树的第i层上最多有2^(i-1)个结点(i≥1)。第一层是根结点,只有一个,所以2(1-1)=20=1。第二层有两个,2(2-1)=21=2。第三层有四个,2(3-1)=22=4。第四层有八个,2(4-1)=2^3=8。性质2:深度为k的二叉树至多有2^k-1个结点(k≥1)。注意这里一定要看清楚,是2k后再减去1,而不是2(k-1)。以前很多同学不能完全理解,这样去记忆,就容易把性质2与性质1给弄混淆了。深度为k意思就是有k层的二叉树,我们先来看看简单的。如果有一层,至多1=

    2022年5月31日
    40
  • pycharm下的调试功能[通俗易懂]

    pycharm下的调试功能[通俗易懂]pycharm下的调试功能

    2022年8月27日
    2
  • 常用端口大全[通俗易懂]

    常用端口大全[通俗易懂]端口说明0无效端口,通常用于分析操作系统1传输控制协议端口服务多路开关选择器2管理实用程序3压缩进程5远程作业登录7回显9丢弃11在线用户13时间17每日引用18消息发送协议19字符发生器…

    2022年9月15日
    0
  • CreateMutex、WaitForSingleObject、ReleaseMutex——创建互斥对象

    CreateMutex、WaitForSingleObject、ReleaseMutex——创建互斥对象CreateMutexCreateMutex作用是找出当前系统是否已经存在指定进程的实例。如果没有则创建一个互斥体。互斥对象是系统内核维护的一种数据结构,它保证了对象对单个线程的访问权互斥对象的结构:包含了一个使用数量,一个线程ID,一个计数器使用数量是指有多少个线程在调用该对象,线程ID是指互斥对象维护的线程的ID计数器表示当前线程调用该对象的次数声明HANDLECreateMu…

    2022年6月26日
    31
  • 八年phper的高级工程师面试之路八年phper的高级工程师面试之路

    八年phper的高级工程师面试之路八年phper的高级工程师面试之路

    2022年2月15日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号