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){.


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


相关推荐

  • 11款网站死链检测工具[通俗易懂]

    11款网站死链检测工具[通俗易懂]11款网站死链检测工具发表于2013-12-1317:29|1751次阅读|来源Webdesigntalks|8条评论|作者JasonSmith工具网站链接摘要:网站中出现断链或死链,会导致部分资源无法访问,出现404报错,影响SEO。我们可以通过下面的11款链接检测工具(包括在线检测工具)帮助我们检查网站失效链接的情况。网站中出现断链或死链,会导致部分资

    2022年7月23日
  • Ubuntu下插入网线无法联网的问题

    Ubuntu下插入网线无法联网的问题今天把以前的服务器搬出来,准备训练一个深度学习模型,然而,在联网的过程中,出现一个问题:就是插入网线后无法联网。想到以前配置过翻墙,就把相关的配置文件如.bashrc,/etc/profile,等相关文件进行了修改,屏蔽掉以前的翻墙代理设置,然而还是无法联网。后面想到以前是用拨号INodeClient来连接上网的,就把与InodeClient相关的配置注释掉,然而还是无法上网。后面在网上找到一个解决方案:参考网址https://blog.csdn.net/zhu334974857/articl.

    2022年6月26日
  • Android Hook技术详解

    Android Hook技术详解代理模式详解,动态代理原理分析,AndroidHook技术详解以及其在插件化,性能优化上的一些案例分析。

    2022年5月25日
  • DropDownList详解

    DropDownList详解在.net中,DropDownList和ListBox是最常用的两个LIST控件,我的学习笔记也从这里开始吧!一、DropDownList命名空间:System.Web.UI.WebControls程序集:System.Web(在system.web.dll中)一些常用的属性:DataMember当数据源包含多个不同的数据项列表时,获取或设置数据绑定控件绑定到的数据列表的

    2022年7月18日
  • js中构造函数和普通函数的区别_函数声明和函数定义

    js中构造函数和普通函数的区别_函数声明和函数定义1、构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯上首字母大写2、构造函数和普通函数的区别在于:调用方式不一样。作用也不一样(构造函数用来新建实例对象)3、调用方式不一样。     a.普通函数的调用方式:直接调用person();     b.构造函数的调用方式:需要使用new关键字来调用newPerson();4、构造函数的函数名与…

    2022年9月8日
  • 计算机启动显示安装程序正在启动服务,安装程序正在启动服务需要多久

    计算机启动显示安装程序正在启动服务,安装程序正在启动服务需要多久大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。安装程序正在启动服务需要多久,这个主要看软件大小,安装完成就会自动运行的,要是系统不断的提示,这个就不一定了,时间可能会很久的,需要耐心等待。程序,香港和台湾对英文procedure的中文翻译,编程语言中的procedure在大陆翻译为“过程”,在港台和其他领域则翻译为“程序”。在大陆于计算机科学、电脑工程、电子工程、电机工程、机…

    2022年6月29日

发表回复

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

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