我有一个简单的问题:
Class A{
B b;
public void doSth{
//This method should execute only once
b.modify(); //calls doSth() again...
}
}
程序运行时,将A的实例传递给B,然后B调用doSth(作为实例的回调)。
b.modify
使B再次调用A.doSth()
,这将无限次调用。我要实现的目标是:我要执行一次doSth(),修改B,然后在下一次执行时以某种方式停止无限调用链,并且不执行b.modify
。任何建议,不胜感激。
最佳答案
将状态标志添加到您的班级:
Class A {
B b;
private volatile boolean called;
public synchronized void doSth {
if (called) return;
called = true;
b.modify();
}
}
如果有多个线程在使用,请使用
volatile
。