Java代码如何保证某个函数只被调用一次呢?
下文笔者讲述java代码限制一个函数只被调用一次的方法分享,如下所示
方式1
static boolean flag = false;
if(!flag) {
callee();
flag = true;
}
此种方式在高并发的场景下
并不能保证函数只被调用一次
使用volatile限制函数只被调用一次
public static volatile initialized = false;
public void init() {
if( initialized == false ){
initialized = true;
// 这里初始化代码....
}
}
最佳保证函数只被调用一次的方法
AtomicBoolean
private static AtomicBoolean initialized = new AtomicBoolean(false);
public void init() {
if( initialized.compareAndSet(false, true) )//如果为false,更新为true {
// 这里放置初始化代码....
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


