一:基于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说明加锁成功,不成功就会进入队列