gpt4 book ai didi

java - 在同一个类中同步静态方法

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

我有这样一个类:

public class Utils {

public static void doSomething() {
// doSomething code
}

public static void doSomethingElse() {
// doSomethingElse code
}
}

我希望这两个方法同步但不相互同步,即没有两个线程可以同时处理 doSomething() 方法,没有两个线程可以同时处理 doSomethingElse() 但这是可以的一个线程处理 doSomething() 方法,另一个线程同时处理 doSomethingElse() 方法。

我已经实现了这样的东西:

public class Utils {

private static final String DO_SOMETHING_LOCK = "DO_SOMETHING_LOCK";
private static final String DO_SOMETHING_ELSE_LOCK = "DO_SOMETHING_ELSE_LOCK";

public static void doSomething() {
synchronized(DO_SOMETHING_LOCK) {
// doSomething code
}
}

public static void doSomethingElse() {
synchronized(DO_SOMETHING_ELSE_LOCK) {
// doSomethingElse code
}
}

我看到 Scott Stanchfield 的回应在这里使用了类似的方法:

How do synchronized static methods work in Java?

但这是最好的方法吗?这对我来说似乎有点笨拙,创建两个对象,仅用于锁定 - 有没有更好的方法来做到这一点?

最佳答案

使用字符串不是一个好主意,因为相同的字符串可能会出现在其他地方,它将是相同的对象,并且您可以在不需要的地方获得依赖项。就这样

private static final Object DO_SOMETHING_LOCK = new Object();

其他的就ok了。

关于java - 在同一个类中同步静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3093694/

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