如何确定条件变量上等待时间最长的线程?

How is the longest waiting thread on a condition variable determined?

我从可重入锁创建了一个条件变量,公平参数设置为 true。我的应用程序中的条件变量有多个等待线程。我在文档中读到,如果我调用信号方法,则等待时间最长的线程将首先发出信号。我想知道如果唤醒线程的条件不成立,他再次调用await,它的等待时间是重置还是继续累加。

private ReentrantLock lock = new ReentrantLock(true);
private Condition condition = lock.newCondition();

lock.lock();
while (!isAllowedToProceed){
    condition.await();
}
lock.unlock();

等待时间是线程当前等待的时间。它不包括任何先前的等待。您可以将其视为 FIFO 队列。