有人能解释一下AtomicLong的用途吗?例如,以下语句的区别是什么?
private Long transactionId;
private AtomicLong transactionId;
有人能解释一下AtomicLong的用途吗?例如,以下语句的区别是什么?
private Long transactionId;
private AtomicLong transactionId;
这两个对象之间存在显著的差异,尽管最终结果是相同的,但它们在使用方法和环境上明显不同。
当你需要:
时,使用基本的Long
对象。
当你需要:
时,使用AtomicLong
。
单独的Long
对象不允许线程互操作,因为两个线程都可能看到并更新相同的值,但是对于AtomicLong
,多个线程将看到相同的值的保证相当不错。
如果你从未涉及线程,则不需要使用AtomicLong
。
Long
类是不可变的,但其在内存中的位置不是。 - Makoto