Java中的Atomic包使用指南
2016-12-28 16:25
417 查看
java通常的代码无法直接使用操作底层的硬件,为了使java具备该能力,增加了Unsafe类
java的并发包中底层大量的使用这个类的功能,了解这个类有助于了解java 并发包,理解为什么并发包中的类的并发性能为什么会比使用synchronized好
AtomicBoolean:原子更新布尔类型。
AtomicInteger:原子更新整型。
AtomicLong:原子更新长整型。
AtomicInteger的常用方法如下:
int addAndGet(int delta) :以原子方式将输入的数值与实例中的值(AtomicInteger里的value)相加,并返回结果
boolean compareAndSet(int expect, int update) :如果输入的数值等于预期值,则以原子方式将该值设置为输入的值。
int getAndIncrement():以原子方式将当前值加1,注意:这里返回的是自增前的值。
void lazySet(int newValue):最终会设置成newValue,使用lazySet设置值后,可能导致其他线程在之后的一小段时间内还是可以读到旧的值。
int getAndSet(int newValue):以原子方式设置为newValue的值,并返回旧值。
AtomicInteger的demo:
View Code
http://ifeve.com/java-atomic/
http://blog.csdn.net/zhangerqing/article/details/43057799
java的并发包中底层大量的使用这个类的功能,了解这个类有助于了解java 并发包,理解为什么并发包中的类的并发性能为什么会比使用synchronized好
Atomic包介绍
在Atomic包里一共有12个类,四种原子更新方式,分别是原子更新基本类型,原子更新数组,原子更新引用和原子更新字段。Atomic包里的类基本都是使用Unsafe实现的包装类。原子更新基本类型类
用于通过原子的方式更新基本类型,Atomic包提供了以下三个类:AtomicBoolean:原子更新布尔类型。
AtomicInteger:原子更新整型。
AtomicLong:原子更新长整型。
AtomicInteger的常用方法如下:
int addAndGet(int delta) :以原子方式将输入的数值与实例中的值(AtomicInteger里的value)相加,并返回结果
boolean compareAndSet(int expect, int update) :如果输入的数值等于预期值,则以原子方式将该值设置为输入的值。
int getAndIncrement():以原子方式将当前值加1,注意:这里返回的是自增前的值。
void lazySet(int newValue):最终会设置成newValue,使用lazySet设置值后,可能导致其他线程在之后的一小段时间内还是可以读到旧的值。
int getAndSet(int newValue):以原子方式设置为newValue的值,并返回旧值。
AtomicInteger的demo:
import java.util.concurrent.atomic.AtomicInteger; public class Main { static Integer a=3; static AtomicInteger ai = new AtomicInteger(a); public static void main(String[] args) { System.out.println(ai.getAndIncrement()); System.out.println(ai.get()); System.out.println(a); } }
10 11 11
View Code
http://ifeve.com/java-atomic/
http://blog.csdn.net/zhangerqing/article/details/43057799
相关文章推荐
- struts.properties核心文件
- java 数据导入到exc ,并下载
- Spring SpringMVC配置
- Spring + SpringMVC + Druid + MyBatis 给你一个灵活的后端解决方案
- java爬虫(使用jsoup设置代理,抓取网页内容)
- 20个非常有用的Java程序片段
- 《JAVA与模式》之模板方法模式
- 百度BAE应用引擎在Java下的使用
- 201301 JAVA 题目2-3级(0,0)-->(m,n)的棋盘走法
- Spark编程指南入门之Java篇三-常用Transformations操作
- java poi 生成excel单个或多个表头
- java实现定时任务的三种方法
- Spring中控制反转IOC和依赖注入DI
- spring task 定时任务实现
- java 对象与json字符串互相转换工具类
- java 验证码
- JAVAWEB贵美网上商城完整项目源码(SSH2)
- eclipse 官方切换成中文版教程
- 浅谈Java中CyclicBarrier的用法
- Java单链表、双端链表、有序链表实现原理