我的应用程序具有Spring Boot应用程序,我希望以此方式保护此功能,以便在一个应用程序的生命期内,该功能一次只能工作一次。
我已经尝试了两种方法-一种是关于stackvoerflow的另一种方法,但没有用。
Validator.run(() -> foo());
private AtomicBoolean done = new AtomicBoolean();
public void run(Runnable task) {
if (done.get()) return;
if (done.compareAndSet(false, true)) {
task.run();
}
}
和第二个
private boolean alreadyExecuted = false; // as member
void foo(){
if (!alreadyExecuted) {
alreadyExecuted = true;
doStuff();
alreadyExecuted = false;
}
}
第一种方法无论如何都允许功能一次运行几次,而第二种方法则根本不起作用。有什么建议吗?