atomic 的原理是什么【java面试题详解】

今天爱分享给大家带来atomic 的原理是什么【java面试题详解】,希望能够帮助到大家。
Atomic包中的类基本的特性就是在多线程环境下,当有多个线程同时对单个(包括基本类型及引用类型)变量进行操作时,具有排他性,即当多个线程同时对该变量的值进行更新时,仅有一个线程能成功,而未成功的线程可以向自旋锁一样,继续尝试,一直等到执行成功。
AtomicInteger 类主要利用 CAS (compare and swap) + volatile 和 native 方法来保证原子操作,从而避免 synchronized 的高开销,执行效率大为提升。
CAS的原理是拿期望的值和原本的一个值作比较,如果相同则更新成新的值。UnSafe 类的 objectFieldOffset() 方法是一个本地方法,这个方法是用来拿到“原来的值”的内存地址,返回值是 valueOffset。另外 value 是一个volatile变量,在内存中可见,因此 JVM 可以保证任何时刻任何线程总能拿到该变量的最新值。

人已赞赏
Java

在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?【面试题详解】

2020-11-21 12:43:56

Java

什么是原子操作? Java Concurrency API 中有哪些原子类(atomic classes)【面试题详解】

2020-11-21 13:25:15

'); })();