可以解释一下AtomicLong的用途吗?例如,以下语句有什么区别?
private Long transactionId;
private AtomicLong transactionId;
最佳答案
这两个对象之间的有很大的差异,尽管最终结果是相同的,但它们绝对是非常不同的,并且在非常不同的情况下使用。
在以下情况下,您可以使用基本的Long
对象:
在以下情况下使用
AtomicLong
:Long
本身不允许线程互操作,因为两个线程可以看到并更新相同的值,但是对于AtomicLong
,围绕多个线程将看到的值有相当不错的保证。实际上,除非您费心使用线程,否则无需使用
AtomicLong
。