2026/4/18 13:56:17
网站建设
项目流程
免费服务器建立网站,网络营销服务的特点有,常州建站公司模板,扬之云公司网站建设AtomicBoolean 是 Java 并发包 (java.util.concurrent.atomic) 里的一个“线程安全布尔”。
一句话#xff1a;它就是一个 可以安全地被多线程同时读/写的布尔值#xff0c;而且比直接用 synchronized 或 volatile 自己加锁更轻量、更快。为什么需要它
普通 boolean 在多线程…AtomicBoolean是 Java 并发包 (java.util.concurrent.atomic) 里的一个“线程安全布尔”。一句话它就是一个可以安全地被多线程同时读/写的布尔值而且比直接用synchronized或volatile自己加锁更轻量、更快。为什么需要它普通boolean在多线程下出现“写-读”竞争时读线程可能永远看不到写线程的改动因为 CPU 缓存、指令重排。volatile boolean能解决“可见性”但做不到“原子复合操作”例如“检查再改”。AtomicBoolean把“可见性 原子性”都做了还提供了一组 CASCompare-And-Set原子操作不用自己加锁。常用 API就这几个java复制AtomicBoolean flag new AtomicBoolean(true); flag.get(); // 读 flag.set(false); // 写 flag.compareAndSet(true, false); // CAS期望值 true 时才改成 false成功返回 true flag.getAndSet(false); // 先返回旧值再设新值原子完成 flag.lazySet(false); // 比 set 更弱一致性的写单线程自增场景偶尔用在前面的 JavaFX 场景里用它干嘛只是想做一个“人工输入” 标志位防止监听器把代码里setText当成用户输入再触发一次逻辑。因为界面更新始终发生在 JavaFX Application Thread单线程用volatile boolean其实也行但AtomicBoolean语义更清晰、线程安全习惯写法拷贝到别的多线程代码里也不会出错。一句话总结AtomicBoolean “线程安全的布尔开关”提供原子读-改-写操作不用自己synchronized