【发布时间】:2011-06-06 17:01:41
【问题描述】:
我想知道我的线程落在了 ReentrantLock 的 LockinQueue 的哪个位置?调用 lock.lock() 时是否有一些魔法锁返回队列中的位置?或者有谁知道如何实现这一点?
提前感谢
托马斯
【问题讨论】:
标签: java concurrency locks
我想知道我的线程落在了 ReentrantLock 的 LockinQueue 的哪个位置?调用 lock.lock() 时是否有一些魔法锁返回队列中的位置?或者有谁知道如何实现这一点?
提前感谢
托马斯
【问题讨论】:
标签: java concurrency locks
@toto 向我指出,它确实使用 getQueueLength() 提供了一个估计值。您可以在获取锁之前或之后获取长度,具体取决于您想知道长度的原因。
队列是无锁的,所以无论位置是什么,在估计值时它可能是不正确的,更不用说在方法返回时。通常你对这个职位不感兴趣,因为你应该构建你的代码,所以它很少等待锁。
也许你可以说明你为什么感兴趣....
【讨论】:
ReentrantLock.getQueueLength() "返回估计等待获取此锁的线程数。"