Java中的AtomicLong用于什么?

Java中的AtomicLong用于什么?,java,atomic-long,Java,Atomic Long,有人能解释一下AtomicLong的用途吗?例如,下面的陈述有什么不同 private Long transactionId; private AtomicLong transactionId; 这两个对象之间存在显著差异,尽管最终结果相同,但它们肯定非常不同,并且在非常不同的情况下使用 在以下情况下使用基本长对象: 您需要包装器类 您正在使用一个集合 您只想处理对象,而不想处理原语(这有点可行) 在以下情况下,您可以使用原子长度: 您必须保证该值可以在并发环境中使用 您不需要包装器类(

有人能解释一下AtomicLong的用途吗?例如,下面的陈述有什么不同

private Long transactionId;
private AtomicLong transactionId;
这两个对象之间存在显著差异,尽管最终结果相同,但它们肯定非常不同,并且在非常不同的情况下使用

在以下情况下使用基本
对象:

  • 您需要包装器类
  • 您正在使用一个集合
  • 您只想处理对象,而不想处理原语(这有点可行)
在以下情况下,您可以使用原子长度:

  • 您必须保证该值可以在并发环境中使用
  • 您不需要包装器类(因为该类不会自动装箱)
Long
本身不允许线程互操作性,因为两个线程都可以看到和更新相同的值,但是使用
AtomicLong
,多个线程可以看到的值有相当好的保证

实际上,除非您曾经费心处理线程,否则您不需要使用
AtomicLong