22 AutomicInteger原理是什么,cas原理,cas操作怎么应用 1 Automic提供了对int类型的原子操作和更新,操作基于cas原理,cas全称Compare and Swap, cas的原理是操作前试图获取当前值,在操作时,看值是否改变,如果未改变,代表没有其他线程同步修改,操作成功,已经改变,返回操作失败或者重试。有2个属性 jdk.internal.misc.Unsafe u=idk.internal.misc.Unsafe.getUnsafe(); volatile int value;Long VALUE=U.objectFiledOffset(AutomicInter.Class,"value"); Unsafe会利用value字段的内存地址偏移完成操作 2 cas底层实现 依赖于CPU底层提供的指令,java提供了2个公共api支持cas操作,long tid=Thread.currenThread().getId(); AutomicFiledUpdator.compareAndSet(this,0l,tid);Automic包提供了很多原子处理类,是很多原子操作的选择,java.9以后提供了 Variable Hand Api, private static final VarHandle handle 首先获取句柄,再调用cas方法,推荐使用Variable Handle Api,后续维护有保障,3 AQS AbstractQueueSynchronized 是实现各种同步结构的基础
展开