} else { //有競(jìng)爭(zhēng)的后續(xù)看 } }
無競(jìng)爭(zhēng),直接獲取鎖
先看下首先獲取鎖并釋放鎖背后的redis都在做什么,可以利用redis的monitor來在后臺(tái)監(jiān)控redis的執(zhí)行情況。當(dāng)我們?cè)诜椒嗽黾覢RequestLockable之后,其實(shí)就是調(diào)用lock以及unlock,下面是redis命令:
加鎖
由于高版本的redis支持lua腳本,所以redisson也對(duì)其進(jìn)行了支持,采用了腳本模式,不熟悉lua腳本的可以去查找下。執(zhí)行l(wèi)ua命令的邏輯回獲取鎖失敗
this.await返回true,進(jìn)入循環(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