AtomicBoolean使用

使用 AtomicBoolean 高效并发处理 “只初始化一次” 的功能要求:

1 private static AtomicBoolean initialized = new AtomicBoolean(false);
2  
3 public void init()
4 {
5    if( initialized.compareAndSet(falsetrue) )
6    {
7        // 这里放置初始化代码....
8    }
9 }

普通方式:

1 public static volatile initialized = false;
2  
3 public void init()
4 {
5     if( initialized == false ){
6         initialized = true;
7         // 这里初始化代码....
8     }
9 }
0

0
时间: 2024-10-15 00:28:46

AtomicBoolean使用的相关文章

AtomicBoolean运用

AtomicBoolean运用 首先先看如下例子 Java代码   private static class BarWorker implements Runnable { private static boolean exists = false; private String name; public BarWorker(String name) { this.name = name; } public void run() { if (!exists) { exists = true; S

java用volatile或AtomicBoolean实现高效并发处理 (只初始化一次的功能要求)

最近碰到一个这样的功能要求:怎么在一个类里面,实现高效并发处理下只可以初始化一次的方法? 实现方式: 1)volatile方式: [java] view plain copy /** * Created by Chengrui on 2015/7/28. */ public class MyThread { private static volatile boolean initialized = false; public void init(){ if(initialized == fals

理解AtomicBoolean

前些天有朋友问我,经常在代码中看到Atomic开头的类,不明白是什么意思. 这里我们就从AtomicBoolean开始说吧,自己正好也复习一下.对于官方的说明是: 可以用原子方式更新的 boolean 值.有关原子变量属性的描述,请参阅 java.util.concurrent.atomic 包规范.AtomicBoolean 可用在应用程序中(如以原子方式更新的标志),但不能用于替换 Boolean. 换一句话说,Atomic就是原子性的意思,即能够保证在高并发的情况下只有一个线程能够访问这个

AtomicBoolean介绍与使用

java.lang.Object java.util.concurrent.atomic.AtomicBoolean 继承自Object. 介绍: 在这个Boolean值的变化的时候不允许在之间插入,保持操作的原子性 方法和举例 compareAndSet(boolean expect, boolean update) 这个方法主要两个作用         1. 比较AtomicBoolean和expect的值,如果一致,执行方法内的语句.其实就是一个if语句         2. 把Atomi

JAVA对多线程的两个有用的辅助类(CountDownLatch和AtomicBoolean)

AtomicBoolean可以让一个线程等待另一个线程完成任务后再执行: A boolean value that may be updated atomically. See the java.util.concurrent.atomic package specification for description of the properties of atomic variables. An AtomicBoolean is used in applications such as ato

(转)Java并发包:AtomicBoolean和AtomicReference

转:https://blog.csdn.net/zxc123e/article/details/52057289 文章译自:http://tutorials.jenkov.com/java-util-concurrent/index.html 这个系列文章已基本结束,如有不妥,请批评指正. 转自请注明出处. AtomicBoolean AtomicBoolean是一个读和写都是原子性的boolean类型的变量.这里包含高级的原子操作,例如compareAndSet().AtomicBoolean

AQS源码解析(一)-AtomicBoolean源码解析

基本类: AtomicInteger AtomicLong AtomicBoolean 数组类型: AtomicIntegerArray AtomicLongArray AtomicReferenceArray 介绍 由于在多线程条件下,如果对共享变量修改容易造成数据不一致的情况,所以对于共享变量需要保证线程安全有有如下几种方式: 使用lock或者synchronized进行同步共享变量 使用CAS方法来保证修改变量为原子性操作 该类为后者,基于CAS方式修改具有原子性. 实现原理 将boole

笔记:多线程

多线程程序在较低的层次上扩展了多任务的概念:一个程序同时执行多个任务,通常每个任务称为一个线程(thread),他是线程控制的简称,可以同时运行一个以上线程的程序称为多线程程序(multithreaded):多线程和多进程有哪些区别呢,本质的区别在于每个进程拥有自己的一整套变量,而线程则是共享数据,Java中启动一个线程的代码如下: // 线程任务的具体实现接口 ????public interface Runnable { public abstract void run(); ????} /

Spark Streaming源码解读之Job详解

一:Spark Streaming Job生成深度思考 1. 做大数据例如Hadoop,Spark等,如果不是流处理的话,一般会有定时任务.例如10分钟触发一次,1个小时触发一次,这就是做流处理的感觉,一切不是流处理,或者与流处理无关的数据都将是没有价值的数据,以前做批处理的时候其实也是隐形的在做流处理. 2. JobGenerator构造的时候有一个核心的参数是jobScheduler, jobScheduler是整个作业的生成和提交给集群的核心,JobGenerator会基于DStream生