序文前回の記事では、フェアロックのソースコードを分析し、次のような結論に達しました。 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ネットワークへの移行を進める中、アマゾン ウェブ サービスが同社の優先パブリック クラウド プロバイダーに
【iTianxia.comからのお知らせ】Dapuはコストパフォーマンスに優れたインナーテキスタイル...
みなさんこんにちは。SEO に関する記事を書いてからしばらく経ちました。主な理由は、Baidu が最...
[[405672]]最近、権威あるコンサルティング会社ガートナーは、エッジコンピューティング分野にお...
最近では、外部リンクを掲載するプラットフォームがますます少なくなり、高品質なコンテンツもますます少な...
このシリーズの 3 番目の記事「Kubernetes の基礎: まず方法を学ぶ」では、Kuberne...
国際データコーポレーション(IDC)がこのほど発表した「中国クラウド運用サービス市場(2020年上半...
[[334452]]画像ソース: unsplash一意の ID により、開発者はデータ オブジェクト...
4年前、ビリビリがナスダックに上場した当時、同社は「ゲーム会社」と定義されていた。ビリビリは確かにゲ...
Xiaomi の携帯電話は、必ず話題になります。Xiaomi の携帯電話の研究開発、プロモーション、...
Chuke 創業者兼 CEO の徐暁輝氏 (写真提供: Sina Technology)半年前、Ch...
最近、知乎はニューヨーク証券取引所で正式に鐘を鳴らした。周元氏はその場で、知乎の成長に付き添った優秀...
アジアのクラウドコンピューティングサービスプロバイダーは現在、暗号通貨のマイニングに使用されるコンピ...
centralhosts.net は長い歴史を持つ IDC マーチャントであり、ドメイン名、仮想ホス...
インターネットには、数え切れないほどのウェブマスターが夢を抱いていた時代がありました。地域性と専門性...
最近では、インターネット業界への参入障壁が比較的低く、高度な教育や高度な技術を必要としないため、この...