1

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();
            }

   }
}
4

0 回答 0