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是Java 5.0引入的一个重要包,它为多线程编程提供了一组高级并发工具。这个包的设计者是Doug Lea,它的出现是JSR-166的一部分,也被称作Tiger更新。Java.util.concurrent的引入是为了解决传统...
Java.util.concurrent(JUC)是Java平台中的一个核心包,专门用于处理多线程并发问题。这个包包含了大量的工具类和接口,极大地简化了并发编程的复杂性,提高了程序的性能和可伸缩性。本测试源文件主要是针对JUC并发...
java.util.concurrent总体概览图。 收取资源分3分。...java.util.concurrent主要包括5个部分executor,colletions,locks,atomic,tools。 该图详细的列举了并发包下面的结构,包含所有接口和具体实现类。
在Java编程领域,`java.util.concurrent`包是并发编程的核心工具包,提供了高效、线程安全的类和接口,使得开发者能够更容易地处理多线程环境。本篇将深入探讨这个包中一些鲜为人知的知识点,以帮助你提升并发编程的...
of java.util.Deque 分布式 java.util.Map 分布式 java.util.concurrent.ConcurrentMap 通过TTL实现可重入 java.util.concurrent.locks.Lock 分布式 java.util.concurrent.atomic.AtomicLong分布式 ...
26. **`java.util.concurrent.atomic`** 包:提供原子操作类,用于线程安全的变量更新。 27. **`java.util.function`** 包:函数式接口,如`Predicate`、`Function`和`Supplier`,支持Lambda表达式。 28. **`java....
21. **`java.util.concurrent.atomic.*`**: 原子变量,用于无锁编程。 22. **`java.util.logging.Logger`**: 日志记录工具。 23. **`java.util.concurrent.locks.Lock`** 和 **`java.util.concurrent.locks....
旨在提供类似于Java中的java.util.concurrent.atomic中的原子数组类型。 提供以下类型: AtomicOptionRefArray –对应于 。 AtomicRefArray –具有强制默认值的AtomicOptionRefArray ,用于删除元素的可选属性。...
24. **`java.util.concurrent.atomic`** 包:包含原子操作类,用于线程安全的变量更新。 25. **`java.util.Calendar`**:旧版的日历类,可以处理复杂的日期和时间计算。 26. **`java.nio.file.Files`** 和 **`java...
API中JUC并发的三个相应包和解释1.java.util.concurrent。 concurrent是并发的意思2.java.util.concurrent.atomic。 atomic 是原子性的意思3.java.util.concurrent.locks。 locks是锁的意思
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`(JUC)包是Java标准库提供的一组强大的并发工具,它为开发者提供了丰富的类和接口,帮助简化并发编程。本用户指南将深入探讨这个包中的核心概念和主要类。 1. **线程池**: `java.util....
java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁的线程安全编程。 java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 ...
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
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.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....
11. `java.util.concurrent.atomic`:提供原子操作类,用于实现线程安全的数据结构,如`AtomicInteger`、`AtomicLong`。 12. `java.util.stream`(Java 8及以上):引入了流式编程,使得数据处理更加简洁,如`...
import java.util.concurrent.atomic.AtomicBoolean; public class Test { public static void main(String[] args) throws InterruptedException { Test test = new Test(); test.testAtomicBoolean(); } ...
5. **原子变量(Atomic Variables)**:`java.util.concurrent.atomic`包提供了原子操作类,如`AtomicInteger`、`AtomicLong`等,它们在多线程环境下提供了无锁的数据更新机制。 6. **管程(Java 5后引入的`java....