您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在运行Java中类的不同实例的线程之间同步静态变量?

如何在运行Java中类的不同实例的线程之间同步静态变量?

有几种同步对静态变量的访问的方法

使用同步静态方法。这将在类对象上同步。

public class Test {
    private static int count = 0;

    public static synchronized void incrementCount() {
        count++;
    }
} 

在类对象上显式同步。

public class Test {
    private static int count = 0;

    public void incrementCount() {
        synchronized (Test.class) {
            count++;
        }
    }
}

在其他静态对象上同步。

public class Test {
    private static int count = 0;
    private static final Object countLock = new Object();

    public void incrementCount() {
        synchronized (countLock) {
            count++;
        }
    }
} 

在很多情况下,方法3是最好的,因为锁对象没有暴露在类之外。

java 2022/1/1 18:15:45 有565人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶