最近碰到一个这样的功能要求:怎么在一个类里面,实现高效并发处理下只可以初始化一次的方法?
实现方式:
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帮助文档:
本文介绍了一种在并发环境中确保类方法仅初始化一次的技术。通过使用volatile变量与AtomicBoolean两种方式来实现,确保了线程安全性。
403

被折叠的 条评论
为什么被折叠?



