我有一个充当同步保护的类。它通过同步其方法来实现。此类还有一个可由其他线程调用的定期侦听器。我想知道在同步块中使用此对象是否也会阻止同步方法执行。这是一个例子:
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?
}
}
}
}
答案 0 :(得分:0)
如果2个线程具有相同的A
实例且一个线程调用listener.interfaceMethod()
,则同一实例上的另一个调用doSomething()
的线程将被阻塞,直到synchronized
块为止在interfaceMethod()
完成。