Java 多线程编程之原子类 AtomicBoolean(构造方法、获取与设置、比较并设置)

一、AtomicBoolean

  • AtomicBoolean 是 Java 并发包(java.util.concurrent.atomic)中的一个类,它提供了一种线程安全的布尔值操作方式,它有如下特点
  1. 原子性操作保证

  2. 可见性操作保证,遵循 happens-before 规则

  3. 基于 CAS 的无锁算法


二、构造方法

1、基本介绍
AtomicBoolean()
  1. 创建初始值为 false 的 AtomicBoolean
AtomicBoolean(boolean initialValue)
  1. 创建指定初始值的 AtomicBoolean
2、演示
AtomicBoolean atomicBoolean1 = new AtomicBoolean();

AtomicBoolean atomicBoolean2 = new AtomicBoolean(false);

AtomicBoolean atomicBoolean3 = new AtomicBoolean(true);

三、获取与设置

1、基本介绍
boolean get()
  1. 获取当前值
void set(boolean newValue)
  1. 设置新值
boolean getAndSet(boolean newValue)
  1. 获取当前值并设置新值
2、演示
  1. get 方法
AtomicBoolean atomicBoolean1 = new AtomicBoolean();

System.out.println(atomicBoolean1.get());

AtomicBoolean atomicBoolean2 = new AtomicBoolean(false);

System.out.println(atomicBoolean2.get());

AtomicBoolean atomicBoolean3 = new AtomicBoolean(true);

System.out.println(atomicBoolean3.get());
# 输出结果

false
false
true
  1. set 方法
AtomicBoolean atomicBoolean1 = new AtomicBoolean();
atomicBoolean1.set(true);
System.out.println(atomicBoolean1.get());

AtomicBoolean atomicBoolean2 = new AtomicBoolean(true);
atomicBoolean2.set(false);
System.out.println(atomicBoolean2.get());
# 输出结果

true
false
  1. getAndSet 方法
AtomicBoolean atomicBoolean1 = new AtomicBoolean();
boolean result1 = atomicBoolean1.getAndSet(true);
System.out.println(result1);
System.out.println(atomicBoolean1.get());

AtomicBoolean atomicBoolean2 = new AtomicBoolean(true);
boolean result2 = atomicBoolean2.getAndSet(false);
System.out.println(result2);
System.out.println(atomicBoolean2.get());
# 输出结果

false
true
true
false

四、比较并设置

1、基本介绍
boolean compareAndSet(boolean expectedValue, boolean newValue)
  1. 如果当前值等于期望值,则将当前值设置,并返回 true

  2. 如果当前值不等于期望值,则不设置,返回 false

  3. 严格保证原子性与可见性

2、演示
AtomicBoolean atomicBoolean = new AtomicBoolean();

boolean result1 = atomicBoolean.compareAndSet(true, false);
System.out.println(result1);
System.out.println(atomicBoolean.get());

boolean result2 = atomicBoolean.compareAndSet(false, true);
System.out.println(result2);
System.out.println(atomicBoolean.get());
# 输出结果

false
false
true
true

你可能感兴趣的:(Java,-,精美笔记,java,开发语言,后端,intellij-idea,intellij,idea,java-ee,服务器)