java并发:原子操作Atomic

One of the best additions in java 5 was Atomic operations supported in classes such as AtomicIntegerAtomicLong etc.

These classes internally rely on an algorithm named CAS (compare and swap). 

原子操作Atomic

image

 

源码解析

AtomicInteger是基于sun.misc.Unsafe来实现的,其定义如下:

解释:

⽤于获取某个字段相对Java对象的“起始地址”的偏移量。 

 

补充:

⼀个java对象可以看成是⼀段内存,各个字段都得按照⼀定的顺序放在这段内存⾥,同时考虑到对⻬要求,可能这些字段不是连续放置的, ⽤这个⽅法能准确地告诉你某个字段相对于对象的起始内存地址的字节偏移量(因为是相对偏移量,所以它其实跟某个具体对象⼜没什么太⼤关系,跟 class的定义和虚拟机的内存模型的实现细节更相关)。

 

该类中有如下一系列方法:

 

其中某些方法的实现如下:

 

AtomicReference

此处再介绍一下AtomicReference,其定义如下:

该类使用了泛型,在定义该类型的变量时需要指定泛型实参,如下:

public final static AtomicReference <String> ATOMIC_REFERENCE = new AtomicReference<String>("abc");

其中String即泛型实参

posted @ 2016-04-13 15:32  时空穿越者  阅读(3668)  评论(1)    收藏  举报