gpt4 book ai didi

java - 同步块(synchronized block)等同于静态同步方法?

转载 作者:搜寻专家 更新时间:2023-10-31 08:30:05 25 4
gpt4 key购买 nike

当您有如下方法时:

public synchronized void addOne() {
a++;
}

等同于:(如有错误请指正)

public void addOne() {
synchronized(this) {
a++;
}
}

但是下面的方法等同于什么?:

public static synchronized void addOne() {
a++;
// (in this case 'a' must be static)
}

什么是与静态同步方法作用相同的同步块(synchronized block)?我知道静态同步方法是在类上同步的,而不是在实例上同步的(因为没有实例),但是什么是什么语法?

最佳答案

相当于在类对象上加锁。您可以通过在类名后面加上 .class 来获取对类对象的引用。所以,像这样:

synchronized(YourClass.class) {
}

参见 Java Language Specification, Section 8.4.3.6 synchronized Methods :

A synchronized method acquires a lock (§17.1) before it executes. For a class (static) method, the lock associated with the Class object for the method's class is used. For an instance method, the lock associated with this (the object for which the method was invoked) is used.

关于java - 同步块(synchronized block)等同于静态同步方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3327909/

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