gpt4 book ai didi

java - 如果信号锁获取/tryAcquire失败,如何使Java线程执行其他任务而不是阻塞?

转载 作者:行者123 更新时间:2023-12-03 13:16:49 25 4
gpt4 key购买 nike

我一直在学习Java的并发性,并且正在查看Java信号量并遇到了问题。我有多个线程试图获取多个锁之一来访问受信号量保护的关键部分,并希望所有未能获取该锁的线程都执行特定任务,然后尝试重新获取该锁。每次获取失败时,我都希望线程执行我已经完成的等待任务,并在完成后再试一次。重复直到获得。在查看Java信号量类的Java文档时,所有的获取方法似乎都以某种方式阻塞某种方式。我该如何完成我想要的?

最佳答案

使用tryAcquire:

while(!done) {
if(sem.tryAcquire()) {
// semaphore acquired
done=true
} else {
// Semaphore not acquired, do something else
}
}
tryAcquire还有另一个超时形式,如果您要等待一段时间然后继续,可以使用它。

关于java - 如果信号锁获取/tryAcquire失败,如何使Java线程执行其他任务而不是阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60268689/

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