Java原子操作Atomic
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/120854796
本文出自【赵彦军的博客】
Java线程安全StampedLock
Java线程安全Lock、ReentrantLock、ReentrantReadWriteLock
Java线程安全集合总结
Java原子操作Atomic
文章目录
- AtomicInteger
- AtomicBoolean
- AtomicLong
- AtomicReference
- AtomicIntegerArray
- AtomicLongArray
Java
的java.util.concurrent
包除了提供底层锁、并发集合外,还提供了一组原子操作的封装类,它们位于java.util.concurrent.atomic
包。
AtomicInteger
我们以AtomicInteger
为例,它提供的主要操作有:
- 增加值并返回新值:
int addAndGet(int delta)
- 加1后返回新值:
int incrementAndGet()
- 获取当前值:
int get()
- 用CAS方式设置:
int compareAndSet(int expect, int update)
AtomicBoolean
AtomicBoolean atomic = new AtomicBoolean(false);
//赋值
atomic.set(true);
//取值
atomic.getAndSet(true);
atomic.get();
AtomicLong
AtomicLong atomic = new AtomicLong(1);
//赋值
atomic.set(1);
//取值
atomic.getAndIncrement();
atomic.incrementAndGet();
atomic.getAndSet(1);
atomic.get();
AtomicReference
定义对象
public class User {int id;String name;public User(int id, String name) {this.id = id;this.name = name;}
}
使用
AtomicReference<User> atomic = new AtomicReference(new User(1, "zhang"));
//赋值
atomic.set(new User(2,"zhao"));
//取值
atomic.getAndSet(new User(3,"xiao"));
atomic.get();
AtomicIntegerArray
AtomicIntegerArray atomic = new AtomicIntegerArray(10);
//赋值
atomic.set(0,1);
//取值
atomic.get(0);
atomic.getAndSet(1,100);
atomic.getAndIncrement(0); //对下标为0的数据减1
atomic.getAndAdd(0,4);
atomic.getAndDecrement(1); //对下标为1的数据减1
AtomicLongArray
用法和 AtomicIntegerArray 很像,具体用法略
Java原子操作Atomic相关推荐
- 什么是Java中的原子操作( atomic operations)
1.啥是java的原子性 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行. 一个很经典的例子就是银行账户转账问题: 比如从账户A向账户B转1000元,那么 ...
- Java原子操作类AtomicInteger应用场景
参考文章:Java原子操作类AtomicInteger应用场景 感谢作者分享!
- Java原子操作类,你知道多少?
原子操作类简介 由于synchronized是采用的是悲观锁策略,并不是特别高效的一种解决方案. 实际上,在J.U.C下的atomic包提供了一系列的操作简单,性能高效,并能保证线程安全的类去 更新基 ...
- java原子操作的实现原理--转载
原文地址:http://www.infoq.com/cn/articles/atomic-operation 1. 引言 原子(atom)本意是"不能被进一步分割的最小粒子",而原 ...
- java原子操作cas_java并发编程系列二:原子操作/CAS
什么是原子操作 不可被中断的一个或者一系列操作 实现原子操作的方式 Java可以通过锁和循环CAS的方式实现原子操作 CAS( Compare And Swap ) 为什么要有CAS? Compar ...
- 向Java添加@atomic操作
总览 原子操作如何在Java中工作,OpenJDK / Hotspot中是否存在可以转换为原子的当前替代方法. 反馈 在我以前的文章中, 对可变字段进行原子操作. 有人指出,无论好意如何," ...
- java 原子量Atomic举例(AtomicReference)
Java并发库提供了很多原子类来支持并发访问的数据安全性,除了常用的 AtomicInteger.AtomicBoolean.AtomicLong 外还有 AtomicReference 用以支持对象 ...
- 原子操作Atomic类
文章目录 一.Synchronized的弊端 二.原子操作类 Atomic 2.1 CAS 机制 2.2 CAS 底层原理 2.3 ABA 问题 一.Synchronized的弊端 同步锁Synchr ...
- Java原子操作和CAS
为了开发者更方便的编写多线程程序,Java提供了一些原子操作类,在java.util.concurrent.atomic包下. 什么是原子操作? 操作:实现特定功能的1行或N行代码,或一个方法. 原子 ...
最新文章
- 安卓端和服务器端通信协议,安卓客户端和服务器如何通信协议
- PMP-【第14章 五大过程组的工作要点】2021-2-17(292页-303页)
- MySQL性能优化的21个最佳实践
- 青海省多地日降水量突破历史极值
- sed 插入多行_Linux三剑客之sed
- 废掉一个产品经理最常见的方式,就是天天画原型
- 品质LOGO模板素材|想知道平面设计师如何设计徽标的秘密吗?
- 初学者python笔记(re模块、正则表达式完全解析)
- Mozilla 重磅推出物联网平台 WebThings!| 极客头条
- Microsoft Office 2008 for Mac Service Pack 1 更新后无法启动程序问题解决方案
- imp 只导表前10条数据_2020年玉石行情,从10条数据就能略窥一二
- SPSS 相关分析(图文+数据集)【SPSS 023期】
- android wifi信号检测
- HTML、css、js 特殊字符(空格符号)
- 计算出当天零分零点对应时间戳的方法分享
- 数据库防火墙闪亮登场(好文共赏)
- 计算机系统-大作业-hello的一生-哈尔滨工业大学2020级
- 防抖(debounce) 和 节流(throttling)的封装使用-最终发布npm
- 关于安科瑞电气安全产品在医药工业洁净厂房的电气工程设计与应用
- 【LAB4-Cisco】OSPF邻居建立过程与LSDB分析
热门文章
- linux c打印日志文件,linux c下log输出代码模板示例代码
- unity mysql生成cexcel_【C#附源码】数据库文档生成工具支持(Excel+Html)
- 五十六、TodoList的三种写法,祭奠我的前端之路
- 五十六、教用Python中的turtle海龟画图(上篇)
- redis 启动无输出_深入剖析Redis系列: Redis入门简介与主从搭建
- 最新综述:从多个角度介绍多模态对话信息搜索(MMCIS)任务
- 神经网络优化中的Weight Averaging
- PW Live 直播 | 清华大学博士生岂凡超:义原知识库的应用和扩充
- ICCV 2019 | COCO-GAN:通过条件坐标的部分图像生成
- 直播报名 | 小身材大能量!用英伟达智能小车Jetbot玩转深度学习