当前位置: 首页 > 图灵资讯 > java面试题> 金三银四精选java面试题-AtomicInteger的原理是什么?

金三银四精选java面试题-AtomicInteger的原理是什么?

来源:图灵教育
时间:2024-01-03 09:51:34
 

AtomicInteger的原理是什么?

一句话概括:使用CAS实现。

在AtomicInteger中,CAS操作的流程如下:

  1. 调用 incrementAndGet()方法,该方法会通过调用unsafe.getAndAddInt()方法,获取当前 AtomicInteger对象的值val
  2. 将 val + 1 得到新的值 next

  1. 使用 unsafe.compareAndSwapInt() 方法进行 CAS 操作,将对象中当前值与预期值(步骤1中获取的val)进行比较,如果相等,则将 next赋值给val;否则返回 false
  2. 如果CAS操作返回false,说明有其他线程已经修改了AtomicInteger对象的值,需要重新执行步骤 1

总结:

在 CAS 操作中,由于只有一个线程可以成功修改共享变量的值,因此可以保证操作的原子性,即多线程同时修改AtomicInteger变量时也不会出现竞态条件。这样就可以在多线程环境下安全地对AtomicInteger进行整型变量操作。其它的原子操作类基本都是大同小异。