首頁 > Java > java教程 > 分析ReentrantLock的重入特性的Java測試範例

分析ReentrantLock的重入特性的Java測試範例

WBOY
發布: 2023-05-09 18:07:08
轉載
811 人瀏覽過

1、概念

可重入的讀寫鎖定,讀寫鎖定內部維護了一個ReadLock和一個WriteLock,底層還是AQS ,但是AQS只有一個state狀態量,如何同時控制讀和寫呢,這裡使用了state(int)的高16位表示讀取狀態,低16為表示寫,高16位的值代表獲取讀鎖的線程數,低16位代表寫鎖的可重入數。

2、原理

利用CAS AQS佇列來實作。它支援公平鎖和非公平鎖,兩者的實作類似

3、實例

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中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板