gpt4 book ai didi

java - ReentrantLock - 这是使用它的有效方法吗

转载 作者:行者123 更新时间:2023-11-29 02:58:50 25 4
gpt4 key购买 nike

我有两个方法都由不同的线程运行,其中一个方法我不想在另一个方法被调用时运行。这就是我选择使用锁的原因

@Override
public synchronized void doSomething(int[] params)
{
while (lock.isLocked())
{
// wait for it to become unlocked
}

//lock is released so lets do some stuff

在我的其他方法中,我有以下实现

@Override
public void doSomethingElse(int param)
{
lock.lock();
for (int i = 0 ; i < param; i++)
{
//do some stuff
}
lock.unlock();
}

while 循环是正确的说法吗,我想让这个线程在这里等待直到锁被释放,还是有更好的方法来实现这个

谢谢

最佳答案

while 循环做忙等待,这绝对是你不想做的事情。调用 lock.lock(); 将阻塞直到锁被释放,所以这是正确的方法,就像您在其他方法中所做的那样。

您也不需要为第一个方法同步,并且应该始终在finally 子句中释放锁。

关于java - ReentrantLock - 这是使用它的有效方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36498252/

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