`
raymond.chen
  • 浏览: 1441181 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java.util.concurrent.atomic包的常用类

 
阅读更多

java.util.concurrent.atomic包主要的常用类包括:AtomicBoolean、AtomicInteger、AtomicIntegerArray、AtomicLong、AtomicLongArray、AtomicLongMap、AtomicReference、AtomicReferenceArray、AtomicStampedReference、AtomicMarkableReference、AtomicDouble、AtomicDoubleArray等。

 

该工具包支持在单个变量上解除锁定的线程安全编程。

 

volatile:多线程读写过程中能够保持它们的可见性。即要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。

 

1、AtomicBoolean的常用方法

AtomicBoolean b = new AtomicBoolean(false);

b.compareAndSet(false, true); //将false改值为true
b.get(); //获取当前布尔值
b.getAndSet(true); //获取当前布尔值,并改值为true
b.set(true); //设置值为true

 

2、AtomicInteger的常用方法

AtomicInteger i = new AtomicInteger(0);

i.intValue(); //返回int型值
i.floatValue(); //返回float型值
i.doubleValue();
i.shortValue();
i.longValue();
i.get(); //获取当前值
i.set(1); //设置新值
i.getAndAdd(1); //获取当前值后,再为当前值增1
i.getAndSet(1); //获取当前值后,再将当前值设为1
i.getAndIncrement(); //获取值后,值自增1
i.getAndDecrement(); //获取值后,值自减1
i.compareAndSet(0, 1); //将0值改为1
i.addAndGet(2); //当前值增2后,再返回当前值
i.incrementAndGet(); //值自增1后,再返回当前值
i.decrementAndGet(); //值自减1后,再返回当前值

 

3、AtomicLong

     类似AtomicInteger

 

4、AtomicReference   对象引用原子性,提供了以无锁方式访问共享资源的能力

        Person p1 = new Person("name1", 1);

        AtomicReference<Person> reference = new AtomicReference<>(p1);

        Person p2 = reference.get();

        boolean b = reference.compareAndSet(null, p3);

        reference.getAndSet(p);

 

5、AtomicStampedReference  可以追踪引用的整个变化过程

 

6、AtomicMarkableReference   追踪变量是否变化过

 

分享到:
评论

相关推荐

    java.util.concurrent 学习ppt

    Java.util.concurrent是Java 5.0引入的一个重要包,它为多线程编程提供了一组高级并发工具。这个包的设计者是Doug Lea,它的出现是JSR-166的一部分,也被称作Tiger更新。Java.util.concurrent的引入是为了解决传统...

    java.util.concurrent 测试源文件

    Java.util.concurrent(JUC)是Java平台中的一个核心包,专门用于处理多线程并发问题。这个包包含了大量的工具类和接口,极大地简化了并发编程的复杂性,提高了程序的性能和可伸缩性。本测试源文件主要是针对JUC并发...

    java.util.concurrent

    java.util.concurrent总体概览图。 收取资源分3分。...java.util.concurrent主要包括5个部分executor,colletions,locks,atomic,tools。 该图详细的列举了并发包下面的结构,包含所有接口和具体实现类。

    关于 java.util.concurrent 您不知道的 5 件事,第 2 部分

    在Java编程领域,`java.util.concurrent`包是并发编程的核心工具包,提供了高效、线程安全的类和接口,使得开发者能够更容易地处理多线程环境。本篇将深入探讨这个包中一些鲜为人知的知识点,以帮助你提升并发编程的...

    Redis客户端Redisson.zip

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

    30个常用java工具类

    26. **`java.util.concurrent.atomic`** 包:提供原子操作类,用于线程安全的变量更新。 27. **`java.util.function`** 包:函数式接口,如`Predicate`、`Function`和`Supplier`,支持Lambda表达式。 28. **`java....

    28个java常用的工具类

    21. **`java.util.concurrent.atomic.*`**: 原子变量,用于无锁编程。 22. **`java.util.logging.Logger`**: 日志记录工具。 23. **`java.util.concurrent.locks.Lock`** 和 **`java.util.concurrent.locks....

    atomic-array-rs:定义几种数组类型,其中元素可以原子更新。 旨在提供类似于Java中的java.util.concurrent.atomic中的原子数组类型

    旨在提供类似于Java中的java.util.concurrent.atomic中的原子数组类型。 提供以下类型: AtomicOptionRefArray –对应于 。 AtomicRefArray –具有强制默认值的AtomicOptionRefArray ,用于删除元素的可选属性。...

    java工具类

    24. **`java.util.concurrent.atomic`** 包:包含原子操作类,用于线程安全的变量更新。 25. **`java.util.Calendar`**:旧版的日历类,可以处理复杂的日期和时间计算。 26. **`java.nio.file.Files`** 和 **`java...

    大厂面试题第二季(加入了MQ和Mysql的面试题以及答案).mmap

    API中JUC并发的三个相应包和解释1.java.util.concurrent。 concurrent是并发的意思2.java.util.concurrent.atomic。 atomic 是原子性的意思3.java.util.concurrent.locks。 locks是锁的意思

    java SE API

    java.util.concurrent.atomic java.util.concurrent.locks java.util.jar java.util.logging java.util.prefs java.util.regex java.util.zip javax.accessibility javax.activity javax.crypto javax....

    java_util_concurrent_user_guide

    `java.util.concurrent`(JUC)包是Java标准库提供的一组强大的并发工具,它为开发者提供了丰富的类和接口,帮助简化并发编程。本用户指南将深入探讨这个包中的核心概念和主要类。 1. **线程池**: `java.util....

    JAVA_API1.6文档(中文)

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

    javafxHtml编辑器.doc

    ava.util.concurrent.atomic java.util.concurrent.locks java.util.function java.util.jar java.util.logging java.util.prefs java.util.regex java.util.spi

    Javase-6.0_中文API_HTML(最新更新)

    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 中文版

    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....

    java常用包2 81个

    11. `java.util.concurrent.atomic`:提供原子操作类,用于实现线程安全的数据结构,如`AtomicInteger`、`AtomicLong`。 12. `java.util.stream`(Java 8及以上):引入了流式编程,使得数据处理更加简洁,如`...

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

    import java.util.concurrent.atomic.AtomicBoolean; public class Test { public static void main(String[] args) throws InterruptedException { Test test = new Test(); test.testAtomicBoolean(); } ...

    工作在同一个java虚拟机中的线程能实现消息互发(alpha)

    5. **原子变量(Atomic Variables)**:`java.util.concurrent.atomic`包提供了原子操作类,如`AtomicInteger`、`AtomicLong`等,它们在多线程环境下提供了无锁的数据更新机制。 6. **管程(Java 5后引入的`java....

Global site tag (gtag.js) - Google Analytics