欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

可重入锁和不可重入锁

程序员文章站 2024-01-08 10:28:16
...

可重入锁就是可以循环迭代使用的锁,不会产生死锁的现象,典型的就是Synchronized和Reentrantlock。
不可重入锁循环迭代使用则有产生死锁的风险。

// 可重入锁
class ReentrantTest implements Runnable{
    public synchronized void get(){
        System.out.println(Thread.currentThread().getName() + " get() ");
        set();
    }
    public synchronized void set(){
        System.out.println(Thread.currentThread().getName() + " set() ");
    }
    public void run(){
        get();
    }
}
// 不可重入锁
class Count{
    Lock lock = new Lock();
    public void print() throws InterruptedException {
        lock.lock();
        doSomthing();
        lock.unlock();
    }

    private void doSomthing() throws InterruptedException {
        lock.lock();
        System.out.println("Hello world!");
        lock.unlock();
    }

    @Test
    public void tt() throws InterruptedException {
        print();
    }
}

上一篇:

下一篇: