r这是来自实例如何与其实例化器通信的后续问题?
如果我有以下情况,并且方法 signal() 被 B 的 2 个实例同时调用,这将导致每个 B 调用 reset() 两次的冲突。我能做些什么来解决它?
如果发生导致重置的事件,则重置是可以的,前提是所有 B 都已完成重置。
public class A {
private B b[];
public A() {
//for loop
b[i] = new B(this);
}
public void signal() {
//tells every B to reset.
//for loop
b[i].reset();
}
}
public class B {
A creator;
public B(A creator) {
this.creator = creator;
}
public void reset() {
//very critical operation that should not happen back to back
}
public void main(String[] args) {
while(true)
if(isBad()==true) {
//Something bad happen. Tell A to reset everyone.
creator.signal();
}
}
}