ホームページ > Java > &#&チュートリアル > ReentrantLock のリエントラント特性を分析する Java テストの例

ReentrantLock のリエントラント特性を分析する Java テストの例

WBOY
リリース: 2023-05-09 18:07:08
転載
792 人が閲覧しました

1. 概念

再入可能な読み取り/書き込みロック: 読み取り/書き込みロックは、 ReadLock と WriteLock、および基礎となる層を維持します。は AQS. ですが、AQS の状態量は 1 つだけです。読み取りと書き込みを同時に制御するにはどうすればよいですか? ここでは、状態 (int) の上位 16 ビットは読み取りステータスを表すために使用され、下位 16 ビットは書き込みを表し、上位 16 ビットは読み取りロックを取得するスレッドの数を表し、下位 16 ビットは書き込みロックのリエントラント数を表します。

2. 原則

CAS AQS キューを使用して実装します。公平なロックと不公平なロックをサポートしています。両方の実装は

3、example

public class ReentrantDemo implements Runnable {
    Lock lock = new ReentrantLock();
    @Override
    public void run() {
        set();
    }
    public void set() {
        try {
            lock.lock();
            System.out.println("set 方法");
            get();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            lock.unlock();// 必须在finally中释放
        }
    }
 
    public void get() {
 
        try {
            lock.lock();
            System.out.println("get 方法");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            lock.unlock();
        }
    }
    public static void main(String[] args) {
        ReentrantDemo reentrantDemo = new ReentrantDemo();
        new Thread(reentrantDemo).start();
    }
}
ログイン後にコピー
に似ています。

以上がReentrantLock のリエントラント特性を分析する Java テストの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート