如果您有如下方法:
public synchronized void addOne() {
a++;
}
Run Code Online (Sandbox Code Playgroud)
它等同于以下内容:(如果我错了,请纠正我)
public void addOne() {
synchronized(this) {
a++;
}
}
Run Code Online (Sandbox Code Playgroud)
但是什么相当于以下方法?:
public static synchronized void addOne() {
a++;
// (in this case 'a' must be static)
}
Run Code Online (Sandbox Code Playgroud)
什么是同步块,其作用与静态同步方法相同?我理解静态同步方法是在类而不是实例上同步的(因为没有实例),但是它的语法是什么?
Qua*_*ter 11
它等同于锁定类对象.您可以通过编写后跟的类名来获取对类对象的引用.class.所以,像:
synchronized(YourClass.class) {
}
Run Code Online (Sandbox Code Playgroud)
请参阅Java语言规范,第8.4.3.6节synchronized方法:
synchronized方法在执行之前获取锁(第17.1节).对于类(静态)方法,使用与方法类的Class对象关联的锁.对于实例方法,使用与此关联的锁(调用该方法的对象).
| 归档时间: |
|
| 查看次数: |
7756 次 |
| 最近记录: |