有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何避免观察者模式中的冲突?

这是来自How can an instance communicate with its instantiator?的后续问题

如果我有以下代码,并且方法signal()由B的两个实例同时调用,这将导致每个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();
            }

   }
}

共 (0) 个答案