java concurrent 之 ReadWriteLock

java concurrent 之 ReadWriteLock

java.util.concurrent.locks.ReadWriteLock是一个高级线程锁机制。 它允许多个线程一次读取某个资源,但只能写入一个。

这个想法是,多个线程可以从共享资源读取而不会导致并发错误。 并发错误首先发生在共享资源的读取和写入同时发生时,或者多个写入同时发生。

ReadWriteLock锁定规则

允许线程锁定ReadWriteLock用于读取或写入守护资源的规则如下:

  • Read Lock 如果没有线程锁定ReadWriteLock进行写入;没有线程请求写锁(但尚未获得)。因此,多个线程可以锁定锁定以供阅读。
  • 如果没有线程正在读取或写入。因此,一次只能有一个线程可以锁定写入的锁。

Example


ReadWriteLock readWriteLock = new ReentrantReadWriteLock();


readWriteLock.readLock().lock();

    // multiple readers can enter this section
    // if not locked for writing, and not writers waiting
    // to lock for writing.

readWriteLock.readLock().unlock();


readWriteLock.writeLock().lock();

    // only one writer can enter this section,
    // and only if no threads are currently reading.

readWriteLock.writeLock().unlock();

你可能感兴趣的:(java concurrent 之 ReadWriteLock)