} else {            //有競爭的后續(xù)看
        }
    }

無競爭,直接獲取鎖

先看下首先獲取鎖并釋放鎖背后的redis都在做什么,可以利用redis的monitor來在后臺監(jiān)控redis的執(zhí)行情況。當(dāng)我們在方法了增加@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