AtomicInteger的底层实现原理

一:基于cas的操作,它的内部属性有unsafe这是一个地层的操作,和valitate value字段,unsafe会利用value的内存偏移地址完成操作。

getAndAddint()方法需要有返回值,所有有重试机制,compareAndSet没有返回值,所以没有重试。

二:如何在实际工作中如何使用cas?

java,提供了俩种api,一个java9以前的AtomicLongFiledUpdater ,java9的 Varible Handler api.

如果出现aba问题,可以使用 AtomicStampReference.

三:什么是aqs? abstractQueueSynchronize

它的内部属性和方法:

一个volatile的整数成员变量。

一个队列,

基于cas操作

如果state是1说明加锁成功,不成功就会进入队列

猜你喜欢

转载自www.cnblogs.com/hanguocai/p/10112351.html
今日推荐