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 { // 这里放置初始化代码.... } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。