您的位置:首页 > Web前端

Java中13个原子操作类、Unsafe类

2018-01-11 16:13 621 查看

原子更新基本类型

AtomicBoolean、AtomicInteger、AtomicLong
Unsafe.java中只提供了3种CAS:compareAndSwapObject、compareAndSwapInt、compareAndSwapLong,而AtomicBoolean是把Boolean转成整型,再更新。

原子更新数组

AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray
构造方法传进AtomicIntegerArray的数组,会被复制一份,对其修改,不会影响原来的数组。

原子更新引用

AtomicReference、AtomicReferenceFieldUpdater引用里的字段、AtomicMarkableReference带有布尔类型标记位的引用类型

原子更新属性/字段

AtomicIntegerFieldUpdater、AtomicLongFieldUpdater、AtomicStampedReference带版本号的,可以解决CAS的ABA问题。

AtomicInteger源码

以 incrementAndGet 方法为例,比较JDK1.7和JDK1.8。





Unsafe类

封装了一些不安全的操作,即一些类似指针的操作。如果指针指错了位置,或者计算指针偏移量时出错,可能会覆盖别人的内存,导致系统崩溃。
JDK1.8中获得unsafe实例的代码,如果不是系统的类加载器加载的就抛出异常。所以这个类仅供JDK内部使用,应用程序无法使用。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: