AtomicBoolean 是 Java 中提供的一种线程安全的布尔类型原子类,能够保证对其操作的原子性和可见性,常用于控制多线程中的某些操作。
AtomicBoolean 还实现了 java.io.Serializable 和 java.util.concurrent.atomic.Serializable,可以序列化和反序列化,因此可以被用于进行远程传输操作或持久化到硬盘上。
在使用 AtomicBoolean 时,可以通过 get() 方法获取当前的布尔值,也可以通过 set() 方法设置新的布尔值。此外,它还提供了一些方法,例如 compareAndSet()、getAndSet() 等,用于实现比较并交换、获取并设置等特定的业务场景。
以下是一个简单的使用示例:
AtomicBoolean atomicBoolean = new AtomicBoolean(false); // 初始化为 false
boolean oldValue = atomicBoolean.get(); // 获取当前值
boolean newValue = !oldValue; // 计算新值
atomicBoolean.compareAndSet(oldValue, newValue); // 比较并设置新值
在上述代码中,定义了一个初始值为 false 的 AtomicBoolean 对象。首先通过 get() 方法获取了当前的布尔值,然后计算出了新的布尔值,最后通过 compareAndSet() 方法进行比较并设置新的布尔值。
需要注意的是,在使用 AtomicBoolean 时,由于它是原子性的,因此不需要加锁,可以大大减少多线程中的竞争和阻塞,提高程序的性能。
-
get()
获取当前 AtomicBoolean 对象内部存储的布尔值。
public boolean get()
-
set(boolean newValue)
设置一个新的布尔值,并覆盖原有的布尔值。
public void set(boolean newValue)
-
getAndSet(boolean newValue)
先获取当前的布尔值,然后设置一个新的布尔值,并返回原有的布尔值。
public boolean getAndSet(boolean newValue)
-
compareAndSet(boolean expect, boolean update)
如果当前的布尔值等于 expect,则将它设置为 update,并返回 true;否则不修改布尔值,返回 false。
public boolean compareAndSet(boolean expect, boolean update)
-
weakCompareAndSet(boolean expect, boolean update)
与 compareAndSet() 方法类似,但是却没有保证原子性。
public boolean weakCompareAndSet(boolean expect, boolean update)
-
toString()
返回当前 AtomicBoolean 对象内部存储的布尔值的字符串形式。
public String toString()