关于jdk中的AtomicInteger的操作

匿名 (未验证) 提交于 2019-12-03 00:18:01









private volatile int value;

这里的valueOffset 指的是value值相对于AtomicInteger对象首地址的在内存中偏移量,根据这个地址可以准确的定位value的值。volatile 可以保证不同线程下的内存可见性,









getAndIncrement的操作相当于一个乐观锁,每次进行i++操作前先获取到原来的value值,最终进行改变数据时,比较当前所持有的value值和原来的value值current 是否一致,如果一致会进行修改值的操作。不一致的情况下会循环调用进行比较(随之带来的就是性能问题,会一直进行死循环,直到修改完value中的值)


public final boolean compareAndSet(int expect, int update) {


主要传入当前的值this 和valueOfferset,这样可以定位到原本的value值,和excepte进行比较,如果线程不安全,就返回false.如果线程安全,将update的值赋给value.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!