gpt4 book ai didi

java - 互斥的java方法执行(不是全部)

转载 作者:行者123 更新时间:2023-12-03 07:51:34 24 4
gpt4 key购买 nike

我有一个带有 4 个方法的 java 类:

public void method_A() {   ...   }

public void method_B1() { ... }

public void method_B2() { ... }

public void method_B3() { ... }

这个类的实例被许多有兴趣调用方法 B1 B2 和 B3 的多线程使用。让它们同时执行绝对没问题

但是,有时 method_A() 会在内部调用,而其他 3 个在那个时候永远不会被调用。当 method_A() 运行时,不应运行其他方法,它们应该等待某种锁定,直到 method_A() 完成。

真的不确定如何将其转化为代码。非常感谢

最佳答案

这是 ReentrantReadWriteLock 的一个很好的案例.它允许同时读取(B1B2B3),但写入(A)会同时阻止读取和写入.

你应该添加:

private ReentrantReadWriteLock lock = new ReentrantReadWriteLock();

B* 方法中:

lock.readLock().lock();
try {
// method code
} finally {
lock.readLock().unlock();
}

A 中:

lock.writeLock().lock();
try {
// method code
} finally {
lock.writeLock().unlock();
}

关于java - 互斥的java方法执行(不是全部),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35114065/

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