我想读的原子和原子写入整数(不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
。当然,我不希望同样的情况适用于原子读取和写入引用的任意对象的包装内容。编辑3:补充说明,我最初希望获得原子读取和写入,认为原子性确保跨线程的一致性。我发现它没有,你仍然需要波动。
不,我只是指原子读。和一个原子写。他们不需要在一起。 – H2ONaCl
所有参考访问都是原子的。唯一不能保证是原子的访问是非易失性访问'double'或'long' –
请参阅编辑2。 – H2ONaCl