光头强急速飞车小游戏—分布式锁只需要两行代码,Mars 3.0.6 发布

 贝克街的天才
发布于 2019年11月16日
收藏 33

本周日,来 吉林福彩快三_信誉网投SC·年终盛典收割技术干货,get新技能!!>>>

本次更新如下

  1. 新增了分布式锁
  2. 新增了MarsBean初始化
  3. 优化了代码结构,以及修复了已知的bug

分布式锁

在MarsBean里面注入MarsRedisLock对象

@MarsBean("testService")
public class TestService {

    @MarsWrite("marsRedisLock")
    private MarsRedisLock marsRedisLock;

}

加锁

Boolean haslock = marsRedisLock.lock("自己定义一个key");
if(hashlock){
    执行加锁后才能执行的代码
}

解锁

marsRedisLock.unlock("加锁的时候传入的那个key");

详细说明

lock方法如果没有获取到锁,会等待20秒,20秒内如果能获取到锁,则正常返回true,然后往下执行,20秒内没获取到锁,则返回false,代表加锁失败。

Boolean haslock = marsRedisLock.lock("自己定义一个key");
if(hashlock){
    执行加锁后才能执行的代码
}

初始化MarsBean

让MarsBean实现InitBean接口

@MarsBean("testService")
public class TestService implements InitBean {

}

重写init方法

@MarsBean("testService")
public class TestService implements InitBean {

    public void init(){
        重写这个方法,然后在里面写你要的初始化操作
    }
}

 

本站文章除注明转载外,均为本站原创或编译。光头强急速飞车小游戏欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 吉林福彩快三_信誉网投SCHINA 社区 [http://bet-ground.com]
本文标题:光头强急速飞车小游戏—分布式锁只需要两行代码,Mars 3.0.6 发布
加载中

精彩评论

贝克街的天才
发现了,是单词拼错了,我还以为你说的是代码的逻辑有漏洞呢。不好意思哈。

最新评论(14

Java劝退师_Joyden_Lo
Java劝退师_Joyden_Lo
哈哈哈哈
贝克街的天才
笑的有点诡异啊,吓到我了
egmkang
egmkang
判断是否枷锁的代码写错了吧
贝克街的天才
没有啊,就一步,保证了原子性。光头强急速飞车小游戏 而且经过了测试,如果key存在,set会失败返回null,不存在才会set成功 返回ok, 而且失效时间也测过,20秒后key自动删除。
egmkang
egmkang
赋值的时候是haslock, 判断的时候是hashlock, 这还没写错??
egmkang
egmkang
另外没有RAII的语言, 基本上都是一坨屎一样的, 上面lock了, 下面出现异常没有unlock, 到头来不是一头包
贝克街的天才
赋值的时候是haslock 这句没看懂,可否详说? 异常 的情况你不会在finally里解锁码? 而且就算你忘记解锁,20秒后框架会自动帮你解锁。
egmkang
egmkang
兄弟, 眼神不好吧, 一个是haslock, 一个是hashlock, has和hash的区别, 感觉是拼错了
贝克街的天才
发现了,是单词拼错了,我还以为你说的是代码的逻辑有漏洞呢。不好意思哈。
I
IsNickName
说话要友好一点
贝克街的天才
只要加锁的操作保证了原子性,就不会有任何问题。光头强急速飞车小游戏 至于上一个兄弟说的事务的情况,下个版本就会解决,事务开始前加锁,事务结束后解锁。 只需一行注解。

这个版本可以也可以解决,只是麻烦一点,需要手工再写一层。调用方法前加锁,调用结束后解锁。
MrXionGe
MrXionGe
如果结合事务的话,就要考虑很多事情了
贝克街的天才
是的,一步步来吧
MrXionGe
MrXionGe
加油哦
返回顶部
顶部