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

标签 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();

最佳答案

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

关于java - 如何确定条件变量上等待时间最长的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58397422/

相关文章:

java - 使用注释插件 + JAXB 在 java 'field' 中插入自定义注释(基于 xsd -> java)

java - 从 Java 中的 JSON 对象中检索具有未知类型的字段的值

Diamond 运算符中的 Java 传递类变量

concurrency - 为什么条件变量有时会错误唤醒?

multithreading - Delphi线程锁等待字符串操作

python - 自定义锁线程python

独特元素的java集合

c++ - 执行速度太快后,工作线程永久休眠

c++ - 线程安全队列和虚假唤醒

ios允许特定数量的线程同时使用一个方法