您的位置 首页 > 德语词汇

atomic的 Atomic 的原理

今天给各位分享atomic的的知识,其中也会对Atomic 的原理进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

atomic的 Atomic 的原理

1、Atomic包中的类基本的特性就是在多线程环境下,当有多个线程同时对单个(包括基本类型及引用类型)变量进行操作时,具有排他性,即当多个线程同时对该变量的值进行更新时,仅有一个线程能成功,而未成功的线程可以向自旋锁一样,继续尝试,一直等到执行成功。

2、//setuptouseUnsafe.compareAndSwapIntforupdates(更新操作时提供“比较并替换”的作用)\nprivatestaticfinalUnsafeunsafe=Unsafe.getUnsafe();\nprivatestaticfinallongvalueOffset;\n\nstatic{\n\ttry{\n\t\tvalueOffset=unsafe.objectFieldOffset\n\t\t(AtomicInteger.class.getDeclaredField("value"));\n\t}catch(Exceptionex){thrownewError(ex);}\n}\n\nprivatevolatileintvalue;

AtomicInteger类主要利用CAS(compareandswap)+volatile和native方法来保证原子操作,从而避免synchronized的高开销,执行效率大为提升。

3、CAS的原理是拿期望的值和原本的一个值作比较,如果相同则更新成新的值。UnSafe类的objectFieldOffset()方法是一个本地方法,这个方法是用来拿到“原来的值”的内存地址,返回值是valueOffset。另外value是一个volatile变量,在内存中可见,因此JVM可以保证任何时刻任何线程总能拿到该变量的最新值。

atomic的和Atomic 的原理的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023