b java并发13个automic原子操作类

本文介绍了Java并发编程中的Atomic原子操作类,包括原子更新基本类型、数组、引用类型和字段类。AtomicInteger、AtomicLong和AtomicBoolean分别用于原子更新整型、长整型和布尔类型。此外,还讲解了如何原子更新数组、引用以及类的字段,这些类基于CAS(Compare and Swap)操作实现线程安全的更新。
摘要由CSDN通过智能技术生成

–> go to 总目录

原子操作类

当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2。因为AB线程在更新变量i的时候拿到的i都是1,这就是线程不安全的更新操作,通常我们会使用synchronized来解决这个问题,synchronized会保证多线程不会同时更新变量i。而JavaJDK 1.5开始提供了java.util.concurrent.atomic包(以下简称Atomic包),这个包中的原子操作类提供了一种用法简单、性能高效、线程安全地更新一个变量的方式。因为变量的类型有很多种,所以在Atomic包里一共提供了13个类,属于4种类型的原子更新方式,

  • 原子更新基本类型
  • 原子更新数组
  • 原子更新引用和
  • 原子更新属性(字段)。
    Atomic包里的类基本都是使用 Unsafe实现的包装类。

原子更新基本类型

  • AtomicBoolean:原子更新布尔类型。
  • AtomicInteger:原子更新整型。
  • AtomicLong:原子更新长整型。

接口与示例

  • int addAndGet(int delta):以原子方式将输入的数值与实例中的值(AtomicInteger里的
    value)相加,并返回结果。
  • boolean compareAndSet(int expect,int update):如果输入的数值等于预期值,则以原子方式将该值设置为输入的值。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值