Java - 只执行一次方法

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.

任何建议都非常感谢.

Boh*_*ian 7

在您的班级中添加州旗:

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如果有多个线程在使用,请使用.