序文前回の記事では、フェアロックのソースコードを分析し、次のような結論に達しました。 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ネットワークへの移行を進める中、アマゾン ウェブ サービスが同社の優先パブリック クラウド プロバイダーに
九巴クラウドは2009年に設立され、主に香港CN2 GIA VPS(発信:中国電信+中国聯通経由CN...
コンテナが将来どこに向かっているのか全体像を把握したいのであれば、資金の流れを追跡し、どこに投資され...
profvds は現在、主にスロバキアの VPS サービスを提供しています。デフォルトでは、ポート ...
LBXU(Lobo Data)は現在、年末プロモーションを開始しています。公式ニュースによると、新し...
ご存知のとおり、フォーラム ブログの外部リンクは、外部リンク リソースが不足している多くの Web ...
10月1日、マイクロソフトはサンフランシスコでの記者会見で次世代のWindowsオペレーティングシス...
virmach.comの特売品が再入荷しました(発売後しばらくは品切れとなります)。お買い得品好きの...
新しい環境に住むときはいつでも、地元の習慣、特に一部の少数民族の習慣を理解する必要があります。少数民...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス私は企業のプロダクトマー...
この記事は、ContainerJournalの2022年の記事「Kubernetesでのゼロトラスト...
【はじめに】 これまでも固定電話においては実名登録が実施されてきましたが、無線インターネット接続カー...
張小龍が公開授業のスピーチで言及した5つの実験プロジェクトのほとんどは、WeChatバージョン8.0...
1. 一般的な傾向: クラウドネイティブのビッグデータ業界の急速な発展とビジネスの高速反復により、デ...
現在、中国でインターネットをサーフィンする場合、Baidu は基本的に欠かせないものとなっているため...
現在、「移動通信再販事業試行計画(意見募集案)」がインターネット上で意見募集されており、我が国の仮想...