java CAS锁 AtomicInteger源码解析
所有的CAS操作都在atomic包下面
下面简单的介绍关于Integer不同的类,在atomic包下面有三个类
1:AtomicInteger类

我标了几个重点介绍的
构造器:两个构造器,如果传递值,赋值到value字段上。

value值是一个volatile修饰的,也就是一个线程修改其他线程都可以看到修改之后的值。
objectFieldOffset是一个native修饰的,底层的代码看不见。
valueOffset 个人比较喜欢叫做 对象字段偏移量,记录当前对象字段的值,方便查询value的数据。


get、set、longValue、floatValue、doubleValue 等简单的方法,一看就懂了,这里面不做解释。
这个方法是unsafe的方法,object是Atomic对象,var2是一个valueOffset 偏移量 var4 要增加的数据。
getIntVolatile方法是一个native修饰的,通过var1和var2获取内存当中的数据,通过compareAndSwapInt进行操作,
如果成功则内存的值替换成了var5+var4,如果不成功就一直的循环,直到成功,返回增加完之后的值。


AtomicInteger这个类当中好多方法都是调用getAndAddInt或者是compareAndSwapInt。




浙公网安备 33010602011771号