java-ReentrantLock读写锁

1、读写锁,一个资源能被多个读者访问,或被一个写者访问,两者不能同时进行。

2、

public interface ReadWriteLock{

  lock readLock();

  lock writeLock();

}

3、ReentrantReadWriteLock为2个锁提供了可重进入的加锁语义。与ReentrantLock相同,ReentrantReadWriteLock能被构造成非公平或公平的。

在公平锁中,选择权交给等待时间最长的线程;如果锁由读者获得而一个线程请求写入锁,那不再允许读者获得读取锁,直到写者被受理,并且已经释放了写入锁。

在非公平锁中,线程允许访问的顺序是不定的。由写者降级为读者是允许的;从读者升级为写得是不允许的。

ReentrantReadWriteLock的写入锁有一个唯一的所有者。

4、使用说明

private final ReadWriteLock lock=newReentrantReadWriteLock();

private final Lock r=lock.readlock();

private final lock w=lock.writelock();

你可能感兴趣的:(java)