Java 中的 AtomicLong 有什么用?
What is AtomicLong in Java used for?
有人可以解释一下 AtomicLong 的用途吗?例如,下面的语句有什么区别?
private Long transactionId;
private AtomicLong transactionId;
这两个对象有显着的区别,虽然最终结果是一样的,但肯定有很大的不同,用在截然不同的情况。
您在以下情况下使用基本 Long
对象:
- 您需要包装器 class
- 您正在处理一个集合
- 您只想处理对象而不是基元(这有点可行)
您在以下情况下使用 AtomicLong
:
- 你要保证这个值可以在并发环境下使用
- 您不需要包装器 class(因为这个 class 不会自动装箱)
Long
本身不允许线程互操作性,因为两个线程都可以看到和更新相同的值,但是对于 AtomicLong
,围绕多个值的值有相当不错的保证线程会看到。
实际上,除非您曾经使用过线程,否则您不需要使用 AtomicLong
。
有人可以解释一下 AtomicLong 的用途吗?例如,下面的语句有什么区别?
private Long transactionId;
private AtomicLong transactionId;
这两个对象有显着的区别,虽然最终结果是一样的,但肯定有很大的不同,用在截然不同的情况。
您在以下情况下使用基本 Long
对象:
- 您需要包装器 class
- 您正在处理一个集合
- 您只想处理对象而不是基元(这有点可行)
您在以下情况下使用 AtomicLong
:
- 你要保证这个值可以在并发环境下使用
- 您不需要包装器 class(因为这个 class 不会自动装箱)
Long
本身不允许线程互操作性,因为两个线程都可以看到和更新相同的值,但是对于 AtomicLong
,围绕多个值的值有相当不错的保证线程会看到。
实际上,除非您曾经使用过线程,否则您不需要使用 AtomicLong
。