当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变
量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2。因
为A和B线程在更新变量i的时候拿到的i都是1,这就是线程不安全的更新操作,通常我们会使
用synchronized来解决这个问题,synchronized会保证多线程不会同时更新变量i。
而Java从JDK 1.5开始提供了java.util.concurrent.atomic包(以下简称Atomic包),这个包中
的原子操作类提供了一种用法简单、性能高效、线程安全地更新一个变量的方式。
使用原子的方式更新基本类型,Atomic包提供了以下3个类。
·AtomicBoolean:原子更新布尔类型。
·AtomicInteger:原子更新整型。
·AtomicLong:原子更新长整型。
通过原子的方式更新数组里的某个元素,Atomic包提供了以下3个类。
·AtomicIntegerArray:原子更新整型数组里的元素。
·AtomicLongArray:原子更新长整型数组里的元素。
·AtomicReferenceArray:原子更新引用类型数组里的元素。
多线程学习笔记十三——java中的原子操作类
最新推荐文章于 2024-08-01 15:33:26 发布