java ReentrantReadWriteLock 之初步(一)

private ReentrantReadWriteLock rw = new ReentrantReadWriteLock();
    
    public void  read(){
        System.out.println("read start");
        rw.readLock().lock();
        System.out.println("read locked....");
        rw.readLock().unlock();
        System.out.println("read unlock...");
    }
    public void write(){
        System.out.println("write start....");
        rw.writeLock().lock();
        System.out.println("write locked...");
        rw.writeLock().unlock();
        System.out.println("write unlock...");
    }
    @Test
    public void wInw(){//写锁中调用写锁
        rw.writeLock().lock();
        System.out.println("wInw lock");
        write();
        rw.writeLock().unlock();
        System.out.println("wInw unlock");
    }
    @Test
    public void wInr(){//写锁中调用读锁
        rw.writeLock().lock();
        System.out.println("wInr lock");
        read();
        rw.writeLock().unlock();
        System.out.println("wInr unlock");
    }
    @Test
    public void rInw(){//读锁中调用写锁
        rw.readLock().lock();
        System.out.println("rInw lock");
        write();
        rw.readLock().unlock();
        System.out.println("rInw unlock");
    }
    @Test
    public void rInR(){//读锁中调用读锁
        rw.readLock().lock();
        System.out.println("rInR lock");
        read();
        rw.readLock().unlock();
        System.out.println("rInR unlock");
    }


结果:在读锁中调用写锁,会导致死锁,其他情况都可以。

你可能感兴趣的:(java,读写锁)