From f098222a43bb37a94563fd83932d8cc2becac1c2 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期二, 22 六月 2021 16:45:37 +0800 Subject: [PATCH] update 集成 Lock4j 分布式锁 --- ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java | 49 +++++++++++++++++++++++++++++++++++++------------ 1 files changed, 37 insertions(+), 12 deletions(-) diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java index b872a5f..f6649ed 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java @@ -1,14 +1,18 @@ package com.ruoyi.demo.controller; +import com.baomidou.lock.LockInfo; +import com.baomidou.lock.LockTemplate; +import com.baomidou.lock.annotation.Lock4j; +import com.baomidou.lock.executor.RedissonLockExecutor; import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.core.redis.RedisLockManager; -import com.ruoyi.demo.service.ITestDemoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + +import java.time.LocalTime; /** @@ -22,27 +26,48 @@ public class RedisLockController { @Autowired - private ITestDemoService testDemoService; + private LockTemplate lockTemplate; /** - * 娴嬭瘯lock4j - * @param key - * @param value - * @return + * 娴嬭瘯lock4j 娉ㄨВ */ + @Lock4j(keys = {"#key"}) @GetMapping("/testLock4j") public AjaxResult<String> testLock4j(String key,String value){ - testDemoService.testLock4j(key); + System.out.println("start:"+key+",time:"+ LocalTime.now().toString()); + try { + Thread.sleep(10000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("end :"+key+",time:"+LocalTime.now().toString()); return AjaxResult.success("鎿嶄綔鎴愬姛",value); } + + /** + * 娴嬭瘯lock4j 宸ュ叿 + */ @GetMapping("/testLock4jLockTemaplate") public AjaxResult<String> testLock4jLockTemaplate(String key,String value){ - testDemoService.testLock4jLockTemaplate(key); + final LockInfo lockInfo = lockTemplate.lock(key, 30000L, 5000L, RedissonLockExecutor.class); + if (null == lockInfo) { + throw new RuntimeException("涓氬姟澶勭悊涓�,璇风◢鍚庡啀璇�"); + } + // 鑾峰彇閿佹垚鍔燂紝澶勭悊涓氬姟 + try { + try { + Thread.sleep(8000); + } catch (InterruptedException e) { + // + } + System.out.println("鎵ц绠�鍗曟柟娉�1 , 褰撳墠绾跨▼:" + Thread.currentThread().getName()); + } finally { + //閲婃斁閿� + lockTemplate.releaseLock(lockInfo); + } + //缁撴潫 return AjaxResult.success("鎿嶄綔鎴愬姛",value); } - - - /** * 娴嬭瘯spring-cache娉ㄨВ -- Gitblit v1.9.3