Redisson 原始碼初探(四)釋放鎖

2021-10-19 21:00:15 字數 747 閱讀 1221

@override

public void unlock() catch (redi***ception e) else

}

@override

public rfutureunlockasync(final long threadid)

boolean opstatus = future.getnow();

if (opstatus == null)

if (opstatus)

result.trysuccess(null);

}});

return result;

}

同樣是一段lua指令碼 

key[1] :鎖名稱

key[2] : channelname

ar**[1]  : unlockmessage

ar**[2] : internallockleasetime

ar**[3] :  執行緒唯一標識 (uuid + ":" + threadid)

redis 是支援發布訂閱模式的,可以針對某個channel key 進行訂閱,別人發布訂閱訊息,就可以監聽到,那麼這裡的作用是什麼?肯定就是通知其他想加鎖的執行緒嘗試加鎖對吧

protected rfutureunlockinnerasync(long threadid)
其實redisson 釋放鎖的邏輯還是比較清晰的。 

Redisson 原始碼初探(八) RedLock

本篇主要講解redisson中得redlock實現,但是很多知識因為和前面一樣,就直接省略了 redlock 原理理一下 1 獲取當前時間戳,單位是毫秒 2 和redissonmultilock一樣,一次輪詢嘗試去每個機器上建立鎖,需要加乙個超時時間,如果超過一定時間就表示獲取鎖失敗 3 嘗試在大多...

OkHttp原始碼初探

在之前的文章我中我們介紹了okhttp的基本使用方法並簡單說明了原始碼下各個module的功能作用,從這篇開始我們將要開始分析okhttp的原始碼。首先,我們先來回憶一下okhttp的使用過程 1.建立乙個okhttpclient物件 2.建立乙個request物件 3.呼叫okhttpclient...

RequireJS原始碼初探

前兩天跟著葉小釵的部落格,看了下requirejs的原始碼,大體了解了其中的執行過程。不過在何時進行依賴項的載入,以及具體的 在何處執行,還沒有搞透徹,奈何能力不夠,只能先記錄一下了。看原始碼從頭開始看,肯定是不切實際的。按照葉小釵的方法,是從data main開始的,所以我們也從那裡開始把!首先,...