Java 语言基础:如何保证某个函数只被调用一次
Posted sp42a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 语言基础:如何保证某个函数只被调用一次相关的知识,希望对你有一定的参考价值。
如何保证某个函数只被调用一次?这种场景很常见,例如初始化的时候。大概任何一个略懂编程的人都会想到用静态变量这个方法。
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
// 这里放置初始化代码....
以上是关于Java 语言基础:如何保证某个函数只被调用一次的主要内容,如果未能解决你的问题,请参考以下文章