序文前回の記事では、フェアロックのソースコードを分析し、次のような結論に達しました。 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ネットワークへの移行を進める中、アマゾン ウェブ サービスが同社の優先パブリック クラウド プロバイダーに
ウェブサイトのランキングでは、過去に投稿した外部リンクがすべてランキングに影響を与えるわけではありま...
今年初めから、福建省通信局はインターネット産業の主管部門としての職責を効率的に遂行し、インターネット...
北京時間5月17日、海外メディアの報道によると、Googleは最近、検索エンジンのウェブサイトラ...
最近、「Google がクラウド コンピューティング ブロックチェーン製品をリリースしようとしている...
6月28日のBaiduの大規模Kサイト以来、草の根ウェブマスターの怒りと抵抗に加えて、最も注目されて...
数日前、友人が百度の右側昇格位置の変化について話しているのを聞きました。後で調べたところ、百度の右側...
pq.hosting は、ポルトガルのリスボン データ センターで、ポルトガル VPS およびポルト...
vpscreed.com は 2017 年に設立されたインドの VPS 販売業者です。現時点では、詳...
2020年は中国のSaaS企業にとってチャンスと課題に満ちた年です。 企業のデジタル意識の深まりと、...
クラウド コンピューティングが非常に普及している今日、クラウド ホストをレンタルするだけでクラウド ...
xhostfire.com は、KVM、純粋な SSD (raid10)、solusvm パネル、1...
ウェブマスターの皆さん(追伸:特に新しいウェブマスターの皆さん)、皆さんが毎日何をしているのか知りた...
ウェブマスターネットワークが6月12日に伝えたところによると、HiChina、新浪微博、CNNICは...
コンテンツの再パッケージ化は、最も強力なコンテンツ マーケティング戦略の 1 つです。この用語はあま...
2006 年に設立されたオランダの Access2.IT Group BV (チェック可能: VAT...