} else { //有競爭的后續(xù)看 } }
無競爭,直接獲取鎖
先看下首先獲取鎖并釋放鎖背后的redis都在做什么,可以利用redis的monitor來在后臺監(jiān)控redis的執(zhí)行情況。當我們在方法了增加@RequestLockable之后,其實就是調(diào)用lock以及unlock,下面是redis命令:
加鎖
由于高版本的redis支持lua腳本,所以redisson也對其進行了支持,采用了腳本模式,不熟悉lua腳本的可以去查找下。執(zhí)行l(wèi)ua命令的邏輯回獲取鎖失敗
this.await返回true,進入循環(huán)嘗試獲取鎖。
this.getEntry(threadId).getLatch().tryAcquire(time, TimeUnit.MILLISECONDS); }http://www.cnblogs.com/ASPNET2008/p/6385249.html time -= System.currentTimeMillis() - currentTime; } while(time > 0L); &n