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 条评论

发表回复

您的电子邮箱地址不会被公开。