多线程:读/写锁

java.util.concurrent.locks包定义了两个锁类,ReentrantLock类和ReentrantReadWriteLock类。

读写锁适用场景:很多线程从一个数据结构读取数据,而很少线程修改其中数据。这种情况下,允许读者线程共享访问,写者线程互斥访问。

读写锁使用步骤

  1. 构造一个ReentrantReadWriteLock对象
private ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();
  1. 抽取读锁和写锁
private Lock readLock = rwl.readLock(); // 得到一个可以被多个读操作共用的读锁,排斥所有写操作
private Lock writeLock = rwl.writeLock(); // 得到一个写锁,排斥其他读操作和写操作
  1. 对所有的读取方法加读锁
public double getTotalBalance() {
	readLock.lock();
	try {...}
	finally { readLock.unlock();}
}
  1. 对所有的修改方法加写锁
public void transfer(...) {
	writeLock.lock();
	try {...}
	finally {writeLock.unlock();}
}

猜你喜欢

转载自blog.csdn.net/baidu_25104885/article/details/88621882
今日推荐