gpt4 book ai didi

java - 将 2 方法与另一种方法同步,但彼此不同步

转载 作者:行者123 更新时间:2023-11-30 09:08:28 25 4
gpt4 key购买 nike

我的 java 程序中有 methodAmethodB 以及 methodSync。我希望当一个线程在 methodSync 内时,其他线程不运行 methodAmethodB 并等待 methodSync 结束。但是methodAmethodB可以同时运行。

如果我想相互同步 3 个方法,我可以使用以下代码:

private static final Object LOCK = new Object();

public static void methodA() {
synchronized (LOCK) {
//Do Job
}
}

public static void methodB() {
synchronized (LOCK) {
//Do Job
}
}

public static void methodSync() {
synchronized (LOCK) {
//Do Job
}
}

但这不是我的解决方案,因为我想同时运行 methodAmethodB

最佳答案

private static final Object A = new Object();
private static final Object B = new Object();

public static void methodA() {
synchronized (A) {
//Do Job
}
}

public static void methodB() {
synchronized (B) {
//Do Job
}
}

public static void methodSync() {
synchronized (A) {
synchronized (B) {
//Do Job
}
}
}

我想这会奏效。祝你好运。

附言您可以将 synchronized 替换为 ReadWriteLock(在方法 A 和 B 中获取读锁,在 methodSync 中获取写锁。如果您希望同时在方法 A 中有两个调用者,则值得这样做。

关于java - 将 2 方法与另一种方法同步,但彼此不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23509954/

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