我的类充当同步守卫。它通过同步其方法来做到这一点。该课程还具有一个定期的侦听器,可以由其他线程调用。我想知道是否在同步块中使用此对象是否也可以防止同步方法执行。这是一个示例:
public class A {
MyStatefulObject o = new MyStatefulObject();
public synchronized void doSomething(int a) {
o.someMethod(a); // o.someMethod cannot be executed concurrently
}
public Listener listener = new Listener() {
@Override
public void interfaceMethod() {
synchronized(A.this) {
A.this.o.someMethod(500); // Is this safe?
}
}
}
}
如果2个线程具有A
的相同实例,一个线程调用listener.interfaceMethod()
,另一个线程在同一实例上调用doSomething()
,直到interfaceMethod()
完成的synchronized
块为止。