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

时间:2019-10-15 14:50:59

标签: java condition-variable locks

我通过可重入锁定创建了一个条件变量,并将公平参数设置为true。我的应用程序中的条件变量上有多个等待线程。我已经阅读过文档,如果我调用signal方法,将首先发出等待时间最长的线程信号。我想知道唤醒线程的条件是否不正确,他会再次调用await,它将重置其等待时间或继续累积。

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

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

1 个答案:

答案 0 :(得分:1)

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