javaReentrantLock的重入测试

美女程序员鼓励师

本教程操作环境:windows7系统、java10版,DELL G3电脑。

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();

    }

}

以上就是java ReentrantLock的重入测试,相信看完全篇的文章后,大家已经能够初步能明白ReentrantLock的使用,也可以在课后对重入锁的相关内容进行拓展。更多Java学习指路:java教程

以上是 javaReentrantLock的重入测试 的全部内容, 来源链接: utcz.com/z/543153.html

回到顶部