`

原子变量 java.util.concurrent.atomic jdk 1.7

阅读更多

  在java并发包的一个子包中,提供了针对于基础类型的原子类型,熟悉并发的会知道,i++并不是一个原子操作,long longValue = 100l;也不是一个原子操作;

那么java.util.concurrent.atomic包中是如何实现对基础类型数据的原子操作的呢?

  以AtomicLong类为例:

 

private volatile long value;

 AtomicLong类有个成员变量value,声明为volatile的;也就是各个线程的共享变量,

   以getAndAdd方法来说明增加值是如何实现原子操作的:

    public final long getAndAdd(long delta) {
        while (true) {
            long current = get();//获取线程中最新的value
            long next = current + delta;//获取修改后的期望值
            if (compareAndSet(current, next))//判断value值是否被修改,如果被修改在while循环中循环改过程,如果未被修改,返回修改后的值
                return current;
        }
    }

    public final long getAndAdd(long delta) {
        while (true) {
            long current = get();
            long next = current + delta;
            if (compareAndSet(current, next))
                return current;
        }
    }

 上面这个方法的实现,就是一个CAS(lock-free)算法的一个实现,该算法在网上有很多详细的解释,大家可以详细的看一下!

 

分享到:
评论

相关推荐

    Redis客户端Redisson.zip

    java.util.Queue 分布式 of java.util.Deque 分布式 java.util.Map 分布式 java.util.concurrent.ConcurrentMap 通过TTL实现可重入 java.util.concurrent.locks.Lock 分布式 java.util.concurrent.atomic....

    JDK concurrent

    这些示例通常会涵盖各种并发控制机制,如`synchronized`, `volatile`, `java.util.concurrent.atomic`包下的原子变量类,以及`java.util.concurrent.locks`包中的锁接口和类。 综上所述,JDK concurrent是一个涵盖...

    Java API 文档 jdk-17.0.2-doc-all

    13. **内存模型和并发工具**:`java.util.concurrent.atomic`和`java.util.concurrent.locks`包提供了原子变量和锁机制,帮助开发者正确地处理多线程环境下的共享数据。 在"docs"这个压缩包文件中,开发者可以深入...

    JDK1.7API文档中文版CHM

    6. **并发工具增强**:加入了`java.util.concurrent.atomic`包中的新原子类,如`AtomicIntegerArray`和`AtomicLongMap`,以及`Phaser`,一个用于协调多个任务执行的同步工具。 7. **字符串操作优化**:增加了`...

    jdk 中文版

    java.util.concurrent.atomic java.util.concurrent.locks java.util.jar java.util.logging java.util.prefs java.util.regex java.util.spi java.util.zip javax.accessibility javax.activation javax....

    jdk api 1.8_google.CHM

    2. **原子变量类**:`java.util.concurrent.atomic`包中的原子变量类如`AtomicInteger`和`AtomicReference`提供了线程安全的更新操作,无需显式同步。 三、其他重要特性 1. **方法引用**:方法引用允许直接引用一...

    java线程-Atomic的含义及示例_.docx

    Java开发工具包(JDK)提供了`java.util.concurrent.atomic`包来处理原子操作的需求。这个包中的类主要用于解决多线程环境中数据的一致性和并发问题,它们通过内部机制确保了操作的原子性,从而避免了显式锁的使用,...

    backport-util-concurrent(2.2 /3.1)

    - 虽然Java 5引入了Atomic包,但在backport-util-concurrent中,你可以找到一些基本的原子操作类,如AtomicInteger和AtomicLong,它们提供了无锁的整数和长整型变量操作,提高了并发环境下的性能。 总的来说,...

    JDK1.8 API 中文 百度翻译版 java帮助文档

    - `java.util.concurrent.atomic`包中的原子类提供了线程安全的操作。 通过阅读和理解JDK1.8 API中文百度翻译版,开发者能够充分利用Java 1.8提供的各种特性和优化,编写出更高效、更易维护的代码。这份文档是每个...

    java jdk-api-1.6 中文 chmd

    java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁的线程安全编程。 java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 ...

    [Java参考文档].JDK_API 1.6

    java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁的线程安全编程。 java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 JAR ...

    JavaSE-6.0-英文手册(2008/11/30_FullUpdate)

    java.util.concurrent.atomic java.util.concurrent.locks java.util.jar java.util.logging java.util.prefs java.util.regex java.util.spi java.util.zip javax.accessibility javax.activation javax....

    jdk7api帮助文档

    此外,`java.util.concurrent.atomic`包中的原子操作类也得到了增强,提供了更多的原子变量类型,如`AtomicIntegerArray`和`AtomicLongFieldUpdater`等。 在类型推断方面,JDK7引入了“钻石操作符”(`<>`),简化了...

    jdk1-7jar包

    6. **并发工具增强**:例如,`java.util.concurrent.atomic`包中的原子类有了更多选择,`ConcurrentHashMap`的性能得到提升。 7. **改进的垃圾收集器**:如G1(Garbage-First)垃圾收集器,提供了一种低暂停时间的...

    java api最新7.0

    java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁的线程安全编程。 java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 JAR ...

    JDK_API_中文版

    此外,`java.util.concurrent.atomic`包中的原子变量类,如`AtomicInteger`、`AtomicLong`,为开发者提供了无锁编程的可能性,提高了并发程序的性能。 JDK 1.6还引入了改进的I/O流处理,特别是`java.nio`包的增强。...

    JAVA_API_1.7中文版

    以及`java.util.concurrent.atomic`包中的原子类更新,增强了线程安全操作。 2. **try-with-resources**:这是一个语法糖,使得资源管理变得更加简单。它自动关闭在try语句块中声明的实现了`AutoCloseable`接口的...

    良葛格java jdk 5.0学习笔记

    最后,这个教程可能还会涵盖并发编程的增强,如并发工具类(如`java.util.concurrent`包中的`ExecutorService`、`Semaphore`等)和`java.lang.ThreadLocal`,以及`java.util.concurrent.atomic`包中的原子操作类,...

    jdk文档jdk文档jdk文档jdk文档jdk文档jdk文档jdk文档

    此外,还有数学运算相关的`java.math`,日期时间处理的`java.time`,以及数据类型转换的`java.util.concurrent.atomic`等。 2. **集合框架**:`java.util`包下的集合框架是Java中处理数据结构的核心,包括List(如...

Global site tag (gtag.js) - Google Analytics