缓存-分布式锁-Redisson-lock锁测试
生活随笔
收集整理的這篇文章主要介紹了
缓存-分布式锁-Redisson-lock锁测试
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
可重入鎖
@ResponseBody@GetMapping("/hello")public String hello() {//1、獲取一把鎖,只要鎖的名字一樣,就是同一把鎖RLock lock = redisson.getLock(" my-lock ");//2、加鎖lock.lock();//阻塞式等待。默認(rèn)加的鎖都是30s時(shí)間。//1)、鎖的自動(dòng)續(xù)期,如果業(yè)務(wù)超長,運(yùn)行期間自動(dòng)給鎖續(xù)上新的30s。不用擔(dān)心業(yè)務(wù)時(shí)間長,鎖自動(dòng)過期被用特//2)、加鎖的業(yè)務(wù)只要運(yùn)行完成,就不會(huì)給當(dāng)前鎖續(xù)期,即使不手動(dòng)解鎖,鎖默認(rèn)在30s以后自動(dòng)刪除。try{System.out.println("加鎖成功,執(zhí)行業(yè)務(wù)..." + Thread.currentThread().getId());Thread.sleep(30000);} catch (Exception e) {} finally { //3、解鎖將設(shè)解鎖代碼沒有運(yùn)行,redisson會(huì)不會(huì)出現(xiàn)死鎖System.out.println("釋放鎖..." + Thread.currentThread().getId());lock.unlock();}return "hello";}基于Redis的Redisson分布式可重入鎖RLock?Java對(duì)象實(shí)現(xiàn)了java.util.concurrent.locks.Lock接口
大家都知道,如果負(fù)責(zé)儲(chǔ)存這個(gè)分布式鎖的Redisson節(jié)點(diǎn)宕機(jī)以后,而且這個(gè)鎖正好處于鎖住的狀態(tài)時(shí),這個(gè)鎖會(huì)出現(xiàn)鎖死的狀態(tài)。為了避免這種情況的發(fā)生,Redisson內(nèi)部提供了一個(gè)監(jiān)控鎖的看門狗,它的作用是在Redisson實(shí)例被關(guān)閉前,不斷的延長鎖的有效期。默認(rèn)情況下,看門狗的檢查鎖的超時(shí)時(shí)間是30秒鐘,也可以通過修改Config.lockWatchdogTimeout來另行指定。
?
總結(jié)
以上是生活随笔為你收集整理的缓存-分布式锁-Redisson-lock锁测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 缓存-分布式锁-Redisson简介整合
- 下一篇: 缓存-分布式锁-Redisson-读写锁