公平なロック/不公平なロック
公平なロックとは、複数のスレッドが順序に従ってロックを適用することを意味します。ロックを取得します。
不公平なロックとは、複数のスレッドがロックを適用する順序ではなく、複数のスレッドがロックを取得する順序を指します。後で適用するスレッドが先にロックを取得する可能性があります。最初に適用されるスレッド。優先順位の逆転または枯渇が発生する可能性があります。
排他ロック/共有ロック
排他ロックとは、一度に 1 つのスレッドのみがロックを保持できることを意味します。
共有ロックは、ロックを複数のスレッドで保持できることを意味します。
相互排他ロック/読み取り/書き込みロック
上記の排他ロック/共有ロックは広義の用語であり、ミューテックス ロック/読み取り/書き込みロックは特定のものです。実現。
Java でのミューテックス ロックの具体的な実装は ReentrantLock であり、Java での読み取り/書き込みロックの具体的な実装は ReadWriteLock です。
オプティミスティック ロック/ペシミスティック ロック
オプティミスティック ロックとペシミスティック ロックは、特定の種類のロックを指すのではなく、同時実行性と同期の観点を指します。
悲観的ロックでは、同じデータに対する同時操作は必ず変更されると考えられ、変更がなくても変更されたものとみなされます。したがって、同じデータに対する同時操作の場合、悲観的ロックはロックの形式になります。悲観的に言えば、ロックを行わない同時操作は間違いなく問題を引き起こすと思います。
オプティミスティック ロックでは、同じデータに対する同時操作は変更されないと考えられます。データを更新する場合、更新を試行し、常にデータを再更新することでデータが更新されます。楽観的に考えれば、ロックを行わなくても同時操作に問題はありません。
上記の説明から、悲観的ロックは書き込み操作が多いシナリオに適しており、楽観的ロックは読み取り操作が多いシナリオに適していることがわかります。ロックしないとパフォーマンスが大幅に向上します。 。
Java での悲観的ロックの使用は、さまざまなロックを使用することです。
Java におけるオプティミスティック ロックの使用は、ロックフリー プログラミングであり、CAS アルゴリズムがよく使用されます (代表的な例として、CAS スピンによるアトミック操作の更新を実装するアトミック クラス)。
推奨チュートリアル: Java 入門チュートリアル
以上がJava で一般的なロックは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。