Bob*_*r02 0 java recursion infinite-loop
我有一个简单的问题:
Class A{
B b;
public void doSth{
//This method should execute only once
b.modify(); //calls doSth() again...
}
}
Run Code Online (Sandbox Code Playgroud)
当程序运行时,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();
}
}
Run Code Online (Sandbox Code Playgroud)
volatile如果有多个线程在使用,请使用.
| 归档时间: |
|
| 查看次数: |
7142 次 |
| 最近记录: |