文档与ReentrantReadWriteLock的矛盾.在公平模式下,最终写锁是否优先于读锁?

gst*_*low 11 java concurrency locking readwritelock

来自ReentrantLock javadoc:

公平模式
当构建为公平时,线程使用近似 到达顺序策略争用进入.当释放当前保持的锁时,将为最长等待的单个写入器线程分配写锁定,或者如果有一组读取器线程等待的时间长于所有等待的写入器线程,则将为该组分配读锁定.

尝试获取公平读锁定(非重复)的线程将阻止是否保持写锁定,或者存在等待写入器线程.在最旧的当前等待的写入器线程获取并释放写锁定之前,线程将不会获取读锁定.当然,如果等待的写入者放弃其等待,将一个或多个读取器线程作为队列中最长的服务器并且写锁定空闲,那么将为这些读取器分配读锁定.

尝试获取公平写锁定(非重复)的线程将阻塞,除非读锁定和写锁定都是空闲的(这意味着没有等待线程).(请注意,非阻塞ReentrantReadWriteLock.ReadLock.tryLock()和ReentrantReadWriteLock.WriteLock.tryLock()方法不遵循此公平设置,并且如果可能,将获取锁定,无论等待线程如何.)

也许这是我的英语问题,但我看到这个解释的矛盾:
从第一个paragrapgh我不明白大约到达订单政策的意义

  1. 从第一段我明白,锁获取最老的等待线程.如果最旧的线程 - 读取线程,那么它将是一组读取线程,其等待时间长于等待最长的写入线程.
  2. 从第二段我明白,如果在wait-set中存在写锁,则不会获取读锁.

请澄清这一矛盾.

Gho*_*ica 2

在此,引用您的引言:

或者如果有一读者线程

换句话说:一个作家赢得了一个读者;但是当一群读者想要锁时,他们就会得到锁。

关于这个问题:“组实际上意味着什么”......这将是一个实现细节,只能通过查看源代码来获得。