【发布时间】:2013-07-14 04:23:28
【问题描述】:
当 Java 成员需要是线程安全的时,我们执行以下操作:
public synchronized void func() {
...
}
这个语法相当于:
public void func() {
synchronized(this) {
....
}
}
也就是说,它实际上使用this作为锁。
我的问题是,如果我使用synchronized 和static 方法,如下:
class AA {
private AA() {}
public static synchronized AA getInstance() {
static AA obj = new AA();
return obj;
}
}
在这种情况下,synchronized 方法的锁定是什么?
【问题讨论】:
-
AA类将被锁定
synchronized(AA.class),但没有实例 -
局部变量
obj的静态声明不是语法错误吗?
标签: java thread-safety synchronized