- 读写锁允许访问共享数据时的并发性高于互斥锁所允许的并发性。 它利用了这样一个事实:一次只有一个线程( 写入线程)可以修改共享数据,
- 在许多情况下,任何数量的线程都可以同时读取数据(因此读取器线程)。 从理论上讲,通过使用读写锁允许的并发性增加将导致性能改进超过使用互斥锁
public class ReadWriterLockDemo {
public static void main(String[] args) {
final TestResource r = new TestResource();
new Thread(new Runnable() {
public void run() {
for(int i=0;i<20;i++){
r.getNum();
}
}
},"read").start();
new Thread(new Runnable() {
public void run() {
r.setNum(10);
}
},"write").start();
}
}
class TestResource{
int num ;
ReadWriteLock lock = new ReentrantReadWriteLock();
public void getNum() {
try{
lock.readLock().lock();
System.out.println(Thread.currentThread().getName()+"--------"+num);
}finally{
lock.readLock().unlock();
}
}
public void setNum(int num) {
try{
lock.writeLock().lock();
this.num = num;
System.out.println(Thread.currentThread().getName()+"--------"+num);
}finally{
lock.writeLock().unlock();
}
}
}