java ReentrantReadWriteLock 之初步(一)
2014-02-06 10:49
453 查看
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");
}
结果:在读锁中调用写锁,会导致死锁,其他情况都可以。
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并发之ReentrantReadWriteLock
- Technique Java. ReentrantReadWriteLock
- JAVA多线程之——读写锁 ReentrantReadWriteLock
- java多线程学习笔记——读写锁(ReentrantReadWriteLock)
- 【死磕Java并发】-----J.U.C之读写锁:ReentrantReadWriteLock
- java ReentrantReadWriteLock
- java类库的阅读笔记_jdk1.7.0_40_java.util.concurrent.locks.ReentrantReadWriteLock
- java 读写锁 , 官方自带示例读解,ReentrantReadWriteLock
- java并发-锁-ReentrantLock(重入锁)和ReentrantReadWriteLock(读写锁)
- 【Java多线程】ReentrantReadWriteLock
- 【Java8源码分析】locks包-ReentrantReadWriteLock
- 【死磕Java并发】-----J.U.C之读写锁:ReentrantReadWriteLock
- 浅谈JAVA之读写锁ReentrantReadWriteLock
- java锁(2)ReentrantReadWriteLock
- Java 并发问题的处理神器:ReentrantReadWriteLock
- Java concurrency之共享锁和ReentrantReadWriteLock_动力节点Java学院整理
- java多线程学习10-使用ReentrantReadWriteLock的一个例子
- 【死磕Java并发】-----J.U.C之读写锁:ReentrantReadWriteLock
- java 中 ReentrantReadWriteLock的读锁和写锁的使用
- JAVA多线程学习之ReentrantReadWriteLock