序文前回の記事では、フェアロックのソースコードを分析し、次のような結論に達しました。 Redis ハッシュ データ構造: 現在のロックを格納します。 Redis キーはロック、ハッシュ フィールドはロック スレッド、ハッシュ値は再入回数です。 Redis リスト データ構造: スレッド待機キューとして機能します。新しい待機スレッドは、rpush コマンドを使用してキューの右側に配置されます。 Redis ソート セット オーダー セット データ構造: 待機中のスレッドの順序を格納し、スコアは待機中のスレッドのタイムアウト タイムスタンプとして使用されます。 ここで、スレッドがロックの失敗をどのように処理し、待機キューに配置されるかを見てみましょう。 1 ロック待ちソースコードエントリ: org.redisson.RedissonLock#lock(long, java.util.concurrent.TimeUnit, boolean)。 スレッドがキューに入った後、Java コードは while (true) ループ内で tryAcquire を呼び出し続け、ロックを取得しようとします。 最後に、RedissonFairLock#tryLockInnerAsync メソッドについて説明します。 便宜上、Lua スクリプトとスクリプト パラメータの意味を再度投稿します。
ソースコード分析 最初の部分、while ループ:
2 番目の部分では、現在のロックが存在するため、スキップします。 3 番目の部分では、現在のロックはスレッドによって保持されていないため、直接スキップされます。 パート4、 現在のロックの有効期限が切れる時間を直接返します。 現在の Redisson バージョンは 3.15.6 であり、バージョンによって若干異なります。 キューの並べ替え 公式はこれをバグだと思い、修正したため、ここでは並べ替えはありません。 詳細については、以下をお読みください: Justin Corpron 2019/5/10, 04:13 RedissonFairLock のタイムアウトドリフトを修正 最大の変更点は、4 番目のセクションが追加されたことです。 画像は 2 つのバージョンの違いのみを表しており、このバージョンが変更されたことを意味するものではありません。 2 まとめスレッドがロックの取得に失敗して待機キューに入ると、ttl != null となり、Java コードはロックの取得を試行し続けます。 ロックが存在せず、現在のスレッドが待機キューの先頭にある場合、ロックは直接取得されます。このキューイングプロセスは、フェアロックの撤回です。 この記事はWeChatの公開アカウント「Programmer Xiaohang」から転載したもので、以下のQRコードからフォローできます。この記事を転載する場合は、プログラマーXiaohangの公式アカウントまでご連絡ください。 |
<<: FONEは2021年中国消費財業界CIOカンファレンスに参加し、ビジネスと金融のデジタル変革について議論しました。
>>: スイスコムがクラウドネイティブ5Gネットワークへの移行を進める中、アマゾン ウェブ サービスが同社の優先パブリック クラウド プロバイダーに
GoGrid は、実際の制御機能を提供する世界で唯一のクラウド サービス プロバイダーであると主張し...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますA5 St...
いわゆる研修サイトとは、研修情報を提供するウェブサイトのことであり、つまり、一定地域内の研修情報をイ...
多くの企業にとって、おそらく 2018 年に最も優先度の高い取り組みは、クラウド支出の最適化です。し...
今日、QQの友人から素晴らしいニュースを聞きました。UBIがONAPP環境をベースにした素晴らしい製...
数え切れないほどの人々が、インターネットからより価値あるものをより良く、より速く掘り出すために集まっ...
abelohost はオランダに登録されたホスティング会社で、KvK 番号は 57218153 です...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています映画『囲碁...
[51CTO.com からのオリジナル記事] Parallels は最近、Apple M1 および ...
ウェブサイトの運営で遭遇する問題は、誰にとっても最大の頭痛の種ですが、特に、ウェブサイトを最適化する...
Oracle Cloud Infrastructure に費やす 1 ドルごとに、Oracle テク...
研究機関は2023年に強い経済的逆風が吹くと予測しており、企業はより少ないリソースでより多くの成果を...
SEO は 1997 年に始まり、百度よりも古い 15 年以上の歴史があると一般に認識されています。...
ウェブサイトのキーワード選択の問題は、マーケティング ウェブサイトの構築において常に特に重要です。適...
この記事の冒頭で、私は友人全員に尋ねたいのですが、現在の検索エンジンがどの世代の検索エンジン技術を使...