https://www.jianshu.com/p/8a44d4a819bc
作用:保证在高并发的情况下只有一个线程能够访问或者修改这个属性值。
一、AtomicBoolean
public void test(View view) {
Demo1 demo1 = new Demo1();
new Thread(demo1::init).start();
new Thread(demo1::init).start();
new Thread(demo1::init).start();
new Thread(demo1::init).start();
new Thread(demo1::init).start();
new Thread(demo1::init).start();
new Thread(demo1::init).start();
}
class Demo1{
private AtomicBoolean initialized = new AtomicBoolean(false);
public void init()
{
System.out.println("想要初始化" + Thread.currentThread().getName());
if( initialized.compareAndSet(false, true) )
{
// 这里放置初始化代码....
System.out.println("真正初始化"+ Thread.currentThread().getName());
}
}
}
这样能保证“真正初始化”这里的代码有且只执行一次。
0 条评论