Ged*_*bel 7 java concurrency java.util.concurrent atomicreference
我不明白这两者之间的区别:
AtomicReference<Integer> atomicReference = new AtomicReference<>(1);
Run Code Online (Sandbox Code Playgroud)
与
AtomicInteger atomicInteger = new AtomicInteger(1);
Run Code Online (Sandbox Code Playgroud)
有人一般可以说何时使用AtomicReference?希望可以有人帮帮我.谢谢.
一个非常重要的区别是方法compareAndSet并且weakCompareAndSet具有与AtomicReference<Integer>它们相同的语义AtomicInteger.这是因为AtomicReferece<Integer>,这些方法==用于比较,两个Integer对象可以是相同的而不是==.使用时AtomicInteger,比较是整数值相等,而不是引用标识.
正如其他人所指出的那样,AtomicInteger还有其他功能AtomicReference<Integer>.此外,AtomicInteger扩展Number,因此它继承了所有Number方法(doubleValue()等),并且可以在Number预期时使用.
如果你只是使用set(...)而没有太大区别,get()但是AtomicInteger有一些其他方法,例如incrementAndGet()只适用于整数.
将AtomicReference身体包裹volatile Object,而AtomicInteger包裹一个volatile int,因此它可以做到整数具体方法,包括加,减,并添加方法. AtomicInteger还延伸Number,这意味着它支持doubleValue(),longValue()等等的方法.
AtomicReference是一个可以引用任意类型的泛型类.
如果你想原子地使用你自己的类的实例,你需要AtomicReference<V>.
AtomicInteger是一个包含整数的专用版本.它更有效(没有不必要的拳击),并有有用的方法,如incrementAndGet().
| 归档时间: |
|
| 查看次数: |
2380 次 |
| 最近记录: |