读写操作非常频繁的时候提高读的效率

来源:互联网 发布:淘宝客用返利网推广 编辑:程序博客网 时间:2024/05/16 04:19

用这个类

 ReadWriteLock rwl = new ReentrantReadWriteLock();

rwl.writeLock().lock();// 取到写锁 写锁是互斥的

rwl.readLock().lock();// 取到读锁 读锁是可以并发读的.

下面是别人的例子.

class Data {
private int data;// 共享数据
private ReadWriteLock rwl = new ReentrantReadWriteLock();
public void set(int data) {
rwl.writeLock().lock();// 取到写锁
try {
System.out.println(Thread.currentThread().getName() + "准备写入数据");
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.data = data;
System.out.println(Thread.currentThread().getName() + "写入" + this.data);
} finally {
rwl.writeLock().unlock();// 释放写锁
}
}
public void get() {
rwl.readLock().lock();// 取到读锁
try {
System.out.println(Thread.currentThread().getName() + "准备读取数据");
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "读取" + this.data);
} finally {
rwl.readLock().unlock();// 释放读锁
}
}
}

0 0