【发布时间】:2016-06-01 22:52:53
【问题描述】:
我有一个本质上看起来像这样的程序
class Outer {
class Inner implements Runnable {
public void run() {
doSomething();
}
}
public synchronized void doSomething() {
//...
}
}
Inner.run() 在调用doSomething() 时会获取哪个锁?是否与synchronized(Inner.this) 或synchronized(Outer.this) 相同?
非常感谢。
【问题讨论】:
-
synchronized与调用点无关。 -
Inner.this和Outer.this不是 Java 中的有效代码。 -
@SamTebbs33 他们是。它们允许您针对内部类具体说明封闭实例。
-
@SotiriosDelimanolis 因为我几乎从不使用非静态内部类,所以我不知道!
-
@SamTebbs33 Nitpick,您几乎从不使用非静态 嵌套 类。 内部类是指非静态嵌套类。
标签: java inner-classes synchronized