为什么某些原始类型缺少Atomic版本而某些原始类型存在?

Gee*_*eek 7 java atomic java.util.concurrent compare-and-swap

Java提供 AtomicInteger,AtomicLong等等,基本上编译成 CAS指令在硬件层面.但是,为什么这样AtomicXXX类不存在其他原始类型,如short和浮点数喜欢floatdouble

Pet*_*rey 5

你不能CAS不到一个字.AtomicBoolean是使用an实现的int,float可以使用intdouble实现long.

AFAIK,这些是作为Doug Lea的并发库的一部分添加的,并且之前没有足够的需要使用这些类型的Atmoic版本.

恕我直言,AtomicDouble可能很有用,但float由于缺乏精确性,我尽量避免使用.

  • 在番石榴中有一个"AtomicDouble". (3认同)