gpt4 book ai didi

java并在另一个线程持有锁时传递同步块(synchronized block)

转载 作者:行者123 更新时间:2023-11-30 05:54:07 25 4
gpt4 key购买 nike

当另一个线程锁定同步对象时,是否可以传递同步代码块?如果没有,是否有替代方案可以以这种方式行事?

最佳答案

您可以将 synchronized block 替换为 java.util.concurrent.locks.ReentrantLock 类。这个类提供了非常相似的互斥特性,但它还有方法tryLock,如果锁是空闲的就获取锁,如果锁被占用则立即返回false。

所以你可以有这样的东西:

 private final ReentrantLock rlock = new ReentrantLock();

线程1的代码:

 // thread 1 has normal synchronized behavior
rlock.lock();
// code
rlock.unlock();

和线程 2:

 // thread 2 will skip the code if the lock is already taken
if(rlock.tryLock()) {
// code
rlock.unlock();
}

关于java并在另一个线程持有锁时传递同步块(synchronized block),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9654674/

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