gpt4 book ai didi

java - 仅针对特定线程的条件代码同步

转载 作者:搜寻专家 更新时间:2023-11-01 02:26:54 25 4
gpt4 key购买 nike

假设有三组线程。让我们说 A、B 和 C。

我想在 A 和 B 类型线程之间发生阻塞的方法中创建一个代码块,在方法调用的所有情况下都允许 C 线程,包括阻塞部分。

换句话说,如果A类线程在阻塞的代码部分,B被阻塞但C没有被阻塞。

你知道是否可以做到吗?如果是这样,如何做到这一点?

最佳答案

您可以使用辅助锁定方法:

private final ReentrantLock mLock = new ReentrantLock();

void conditionalLock() {
ThreadGroup group = Thread.currentThread().getThreadGroup();
if (group.equals(groupA) || group.equals(groupB)) {
mLock.lock();
}
}

编辑 根据 erickson 的建议更改/简化了条件

void conditionalUnlock() {
if (mLock.isHeldByCurrentThread()) {
mLock.unlock();
}
}

然后,在同一个类的方法中:

    conditionalLock();
try {
// block you want to synchronize between threads of group A & B
} finally {
conditionalUnlock();
}

关于java - 仅针对特定线程的条件代码同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20305792/

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