【发布时间】:2011-11-15 12:48:36
【问题描述】:
我想要对 Integer(不是 int)和其他的原子读取和原子写入如下:
volatile Double a; // not double
volatile Long b; // not long
Integer c; // not int
Boolean d; // not boolean
如果不是,我如何让它们成为原子的?
编辑:澄清一下,我不需要结合读写的原子操作。我只需要分别进行原子读取和原子写入。
Edit2:@Peter Lawrey,@PeterLawrey,这很讽刺:
Double a;
a = 0.5d; 这里的写入是原子的,因为 a 是一个引用。而在这
double a;
a = 0.5d; 不保证写入是原子的。然而Double 包装了double。当然,我不希望这同样适用于具有原子读取和写入引用的任意对象的包装内容。
Edit3:附加说明,我最初想获得原子读写,认为原子性可确保跨线程的一致性。我发现它没有,你仍然需要波动性。
【问题讨论】: