最近碰到一个这样的功能要求:怎么在一个类里面,实现高效并发处理下只可以初始化一次的方法?
实现方式:
1)volatile方式:
/**
* Created by Chengrui on 2015/7/28.
*/
public class MyThread {
private static volatile boolean initialized = false;
public void init(){
if(initialized == false){
initialized = true;
//here is the initialization code
}
}
}
2)AtomicBoolean方式:
/**
* Created by Chengrui on 2015/7/28.
*/
public class MyThread {
private static AtomicBoolean initialized = new AtomicBoolean(false);
public void init(){
if(initialized.compareAndSet(false, true)){
//here is the initialization code
}
}
}
附:AtomicBoolean帮助文档: