【发布时间】:2016-09-14 05:46:08
【问题描述】:
我最近遇到了来自java.util.concurrent.atomic 包的原子类。据我所知,不可变类在本质上默认是线程安全的,所以我们不需要同步它们。后来我才知道像 Integer、Boolean、Character 等包装类本质上是不可变的,那么为什么我们需要像 AtomicInteger 或 AtomicLong 这样的 Atomic* 类。另外,请解释一下AtomicReference是什么。
【问题讨论】:
-
原子类是可变的。
-
因为......也许你想要一个不可变的原子类?
-
@Eran 我同意,但是包装类将在多线程环境中工作,那么为什么需要原子类。大卫的原因是他们创造它们的主要原因吗?
-
仅使用不可变类,您可以共享的只是常量。我认为不需要太多的想象力就可以意识到有时您需要的不仅仅是常量。
标签: java multithreading concurrency