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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 论文写作——origin画图[通俗易懂]

    论文写作——origin画图[通俗易懂]一origin的安装详见下面网址,内涵下载路径和破解方法。http://www.ddooo.com/softdown/51005.htm二origin画图1、柱状图①打开后页面如下所示。A(X)代表X轴的数据,B(Y)代表Y轴的数据。②将数据填入中间的book1中。book的作用和Excel中很类似,我们可以按照自己的需要添加sheet,添加book。我们将…

    2022年4月19日
    75
  • 反编译Java_java反编译的代码可以修改么

    反编译Java_java反编译的代码可以修改么1.反编译是java开发者必不可少的东西,今天我们jd-gui-0.3.6.exe这个工具来反编译class文件。下面是下载地址:http://localhost2.工具使用起来很简单,双击打开–>File—>OpenFile选择你要反编译的class。下面我们来看下几个反编译后的神奇例子://————-实例1————//反编译前publiccl

    2025年6月6日
    2
  • 23机房工程

    23机房工程

    2021年8月25日
    59
  • thinkCMF—-公共模板的引入

    thinkCMF—-公共模板的引入thinkCMF—-公共模板的引入

    2022年4月20日
    72
  • 史上最简单的 MyBatis 教程(一)

    史上最简单的 MyBatis 教程(一)1简介MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架,其几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(PlainOldJavaObjects,普通的Java对象)映射成数据库中的记录。MyBatis应用程序大都使用SqlSessionFac

    2025年7月22日
    1
  • 把一个数据表导入另一个数据库_把一个表里的数据导入另一个表

    把一个数据表导入另一个数据库_把一个表里的数据导入另一个表文章作者:姜南(Slyar)文章来源:SlyarHome(www.slyar.com)转载请注明,谢谢合作。之前发了《表达式变量批量替换器batchSQL》这篇文章,有童鞋说导入数据用phpMyAdmin提供的csv导入功能不是更好。的确,导入数据进入mysql用这个功能非常好,不过如果需要进行批量操作的是update或者其他操作呢,例如要从新的excel里批量更新某一部分的数据,总不能全…

    2022年9月2日
    5

发表回复

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

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