gpt4 book ai didi

java - 锁状态下的信号线程

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:03 25 4
gpt4 key购买 nike

我从这个 API 中得到了以下几点我想知道以下两点之间的区别:

  1. Waiting threads are signalled in FIFO order.

  2. The ordering of lock reacquisition for threads returning from waiting methods is the same as for threads initially acquiring the lock, which is in the default case not specified, but for fair locks favors those threads that have been waiting the longest.

它与通常由 ReentrantLock 方法 .newCondition() 返回的 Condition 类有关,我引用它的部分解释了 方法之间的区别code>Condition 和 Object 类的常规监控方法。

“等待线程以 FIFO 顺序发出信号”。我认为只要 lock 的创建公平与否,等待线程以 FIFO 顺序发出信号这一事实就完全无关紧要,不是吗?因为无论如何,它们是否被构建,公平与否,决定了它们如何排队。

只是要求确认。

提前致谢。

最佳答案

请参阅以下问题的答案:

1.Waiting threads are signalled in FIFO order.

当我们调用 Condition 的 await() 方法时,线程进入等待状态,上面的语句指的是这些处于等待状态的线程是如何被通知的。因此,如果线程 T1 在 T2 之前进入等待状态,则 T1 将在 T2 之前收到信号。

2.The ordering of lock reacquisition for threads returning from waiting methods is the same as for threads initially acquiring the lock, which is in the default case not specified, but for fair locks favors those threads that have been waiting the longest.

继续上面的陈述,当等待线程收到信号时,它往往会重新申请锁。虽然上面的语句说 T1 将在 T2 之前发出信号,但是当涉及到重新获取锁时,重新获取的顺序使用 Lock 定义的概念。因此,这取决于 Lock 对象的创建方式。在创建 Lock 时,您可能已经指定了一个公平参数:

ReentrantLock(boolean fair)

如果是,则使用该参数,如果不是,则会发生锁的默认行为,您可以在此 link 阅读有关 ReentrantLock 锁的更多信息

这些陈述可能有更多解释,只是试图在这里详细说明我的理解。希望能够澄清。

干杯!!

关于java - 锁状态下的信号线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17813599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com