Atomic原子操作
Atomic 基本类型
1. AtomicBoolean
AtomicBoolean数据Atomic包下面的线程安全类。是以原子方式更新boolean值的。
1.1. 构造函数
new AtomicBoolean();
new AtomicBoolean(boolean initialValue);
如果方法中的参数不填写,默认为false。
1.2. 常用方法
get();
返回当前boolean值
set(boolean value);
无条件设置boolean值
compareAndSet(boolean expect, boolean update);
如果当前值与预期值一直,以原子方式将当前值更新,并返回true;否则返回false。
getAndSet(boolean value);
以原子形式将当前值进行更新并返回原始值。
1.3. 应用场景
1.3.1. 多线程中数据初始化
private AtomicBoolean initState = new AtomicBoolean(false);
@Override
public void init() {
if (! initState.compareAndSet(false, true)) {
//init once
return ;
}
//TODO 写初始化代码
}
1.3.2. 接收和发送消息的程序以进程的形式部署,在关闭进程中的destory方法中将变量更新。
private AtomicBoolean shutdown = new AtomicBoolean();
//接收消息
@Override
public void run(){
while(!shutdown.get()){