【发布时间】:2013-07-22 09:05:45
【问题描述】:
public synchronized int getCountOne() {
return count++;
}
就像上面的代码同步方法在功能上等同于在方法体周围有一个synchronized (this) block。对象“this”没有被锁定,而是对象“this”被用作mutex,并且主体被阻止与同样在“this”上同步的其他代码部分同时执行。
基于类似的理由,当我们获得一个类级别的锁时,它被用作mutex。就像我们有一个函数一样
public static synchronized int getCountTwo() {
return count++;
}
显然两个线程可以同时获得getCountOne(object level lock)和getCountTwo(class level lock)的锁。所以 getCountOne 类似于
public int getCountOne() {
synchronized(this) {
return count++;
}
}
有没有 getCountTwo 的等价物?如果没有,使用什么标准来获得 Class 级别的锁?
【问题讨论】:
标签: java static synchronization locking