我有两个类
public class A {
private byte[] buf;
public synchronized void foo() {
// does something with buf
}
public class B {
public synchronized void bar() {
// also does something with buf
}
}
}
据我所知,方法 bar()
在类 B
的实例上同步。如何在类 A
的对象上同步它为了保护buf
?
最佳答案
如上所述in this answer ,您可以执行以下操作:
public class A {
private byte[] buf;
public synchronized void foo() {
// does something with buf
}
public class B {
public void bar() {
synchronized (A.this) {
// also does something with buf
}
}
}
}
这只有效,因为您使用的嵌套类具有对其父类的引用。但是,如果您只想同步变量 buf
的使用,您也可以这样做:
public class A {
private byte[] buf;
public void foo() {
synchronized (buf) {
// does something with buf
}
}
public class B {
public void bar() {
synchronized (buf) {
// also does something with buf
}
}
}
}
关于java - 如何同步父类上嵌套的Java类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32549555/