回答

收藏

redisson重入锁上锁失败5金钱.anslist{background:url(source/plugin/keke_

技术问答 技术问答 401 人阅读 | 0 人回复 | 2023-09-11


    $ d" b+ P* Z3 k! G( A
  • public boolean acquire(String lockName) {4 r( A6 E8 g  U+ i6 X* M
  •     //声明key对象6 Z# v  P: _8 X* s9 ^+ X
  •     String key = LOCK_TITLE + lockName;4 \! u# n/ F( }* {8 F! }+ z0 n9 E6 y
  •     //获取锁对象
    * r  N" R+ r- j
  •     RLock mylock = redissonClient.getLock(key);. w) }' R- X! Y/ A* f2 c
  •     //加锁,并且设置锁过期时间3秒,防止死锁的产生 uuid+threadId0 `8 K3 L( M+ n2 J& d& x; C
  •     mylock.lock(3, TimeUnit.SECONDS);( m& t7 H  G- }" k
  •     //加锁成功
      I; R& y6 ^4 G; M- O
  •     return true;
    $ J9 A8 b$ j- ~' L) \9 u
  • }
    ( P' ^( k" a% ~1 S

  • " l9 g# v5 U# ]+ J
  • public void release(String lockName) {
    2 m3 B$ U" L! L% C! [
  •     String key = LOCK_TITLE + lockName;2 d2 n7 {4 w# T8 Y' S
  •     RLock mylock = redissonClient.getLock(key);8 |1 v5 ~4 s0 g7 B7 i2 T; h0 u
  •     mylock.unlock();
    3 d  [6 i2 g" ?8 k
  • }2 }- Y  E7 Z3 C- k
调用如下$ [( s9 ^# z8 z! o
    + {1 `5 _8 Q  x# f
  •         boolean acquire = distributedRedisLock.acquire(CacheKey.REGISTER_SMS_RECALL);
    ( j+ g1 y8 c# U
  •         try {
    + k4 M2 y0 ~% q5 o4 m8 Y1 v# q" e
  •             if (acquire) {3 o7 u. c  E) T7 [; k# j! U& F
  •                 taskExecutor.execute(() -> {
    # ^7 _2 N& i, o& F
  •                     log.info("多线程测试");: |  P  R! o# o7 H& ]$ d
  •                 });
    $ G; \- ~: w: {
  •             }
    % X& e' z! W9 K$ U0 K' v
  •         }catch (Exception e) {. W7 X5 b. f: ^. E6 ~
  •             log.info("{}", ExceptionUtils.getFullStackTrace(e));) T! _4 I6 c- {2 i! p3 h; P. I8 z- L/ _
  •         }finally {
    $ C% \8 F9 P- A) o* h- e
  •             distributedRedisLock.release(CacheKey.REGISTER_SMS_RECALL);        }& I- b! K+ `" j& `3 H# S& r
上锁方法如上,但是使用多线程调用的时候,上锁失败了

    3 k7 k" \$ O2 J! J0 [
  • Application_Stdout [2021-12-29 11:06:52] [traceid=yPGwkuNz,uid=,uri=/mid/test/test,host=192.168.126.47,ref=,ua=python-requests/2.26.0]  INFO  [http-nio-8089-exec-6] o.n.mid.task.SmsRecallRegisterTask[48] - 多线程测试
    - a6 ~% Y! x8 l1 z6 \( q
  • Application_Stdout [2021-12-29 11:06:52] [traceid=krfsFsWv,uid=,uri=/mid/test/test,host=192.168.126.47,ref=,ua=python-requests/2.26.0]  INFO  [http-nio-8089-exec-8] o.n.mid.task.SmsRecallRegisterTask[48] - 多线程测试Application_Stdout [2021-12-29 11:06:52] [traceid=8c9RU1WK,uid=,uri=/mid/test/test,host=192.168.126.47,ref=,ua=python-requests/2.26.0]  INFO  [http-nio-8089-exec-10] o.n.mid.task.SmsRecallRegisterTask[48] - 多线程测试$ ~/ d, v* a" d1 O  j& A2 H
7 H3 L2 }1 o: k' n  M

1 o) ?8 \; }- M+ v" p; \/ d7 i我知道答案 回答被采纳将会获得5 金钱 已有0人回答
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则