当前位置: 首页 > news >正文

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

相关文章:

  • rancher 解决拉取dashboard-shell镜像失败的问题
  • Wincc管对象的使用
  • 【ESP32-microros(vscode-Platformio)】
  • Go 语言中的 package main、 func main() 和main.go的使用规范
  • 浮点数比较在Eigen数学库中的处理方法
  • AI前沿周报:2025年3月技术深度解析
  • Express中间件(Middleware)详解:从零开始掌握(1)
  • 在Java项目中,引入【全局异常处理器】
  • HarmonyOS-ArkUI V2装饰器-@Once
  • 第一节:React 基础篇-React虚拟DOM原理及Diff算法优化策略
  • 【Web功能测试】注册与登录功能测试用例设计深度解析
  • (十四)安卓开发中的RecyclerView详解
  • Python 和 JavaScript两种语言的相似部分-由DeepSeek产生
  • 计算机操作系统-【死锁】
  • 信奥赛之c++基础(循环结构之for循环)
  • Java常用工具算法-6--秘钥托管云服务3--微软zure Key Vault
  • 第5章,将 Toy IR 程序部分地下降到更低层的 dialect 以便优化
  • 【Grok 大模型深度解析】第二期:架构探秘与训练哲学
  • 在AMGX中使用MPI加载自定义分布式矩阵和向量
  • 自定义函数:为接口开发增添灵活性 - Apipost 的独特优势
  • 有那个网站可以做任务赚钱/南宁百度seo推广
  • 北京企业官网网站建设哪家好/seo关键词软件
  • 建设网站有哪些参考文献/网络营销师是干什么的
  • wordpress 腾讯云插件/手机优化是什么意思
  • 网站做浮动边框asp代码/360网站安全检测
  • 广州注册公司地址要求/seo技巧seo排名优化