可以解释一下AtomicLong的用途吗?例如,以下语句有什么区别?

private Long transactionId;
private AtomicLong transactionId;

最佳答案

这两个对象之间的有很大的差异,尽管最终结果是相同的,但它们绝对是非常不同的,并且在非常不同的情况下使用。

在以下情况下,您可以使用基本的Long对象:

  • 您需要包装器类
  • 您正在使用集合
  • 您只想处理对象,而不要处理基元(可以解决)

  • 在以下情况下使用AtomicLong:
  • 您必须保证该值可以在并发环境中使用
  • 您不需要wrapper类(因为该类不会自动装箱)
  • Long本身不允许线程互操作,因为两个线程可以看到并更新相同的值,但是对于AtomicLong,围绕多个线程将看到的值有相当不错的保证。

    实际上,除非您费心使用线程,否则无需使用AtomicLong

    10-08 09:35