Java中的哪些操作被视为原子操作?
Answers:
64 bit jvm, long and double assignments are also atomic.
你确定吗?我会说它们是用于编译的代码,但是解释代码呢?也许您是对的,但是有保证吗?
在Java中,保证32位或更少位的读写是原子的。
从原子上讲,我们的意思是每个动作都在一个步骤中发生并且不能被打断。因此,当我们有多线程应用程序时,读和写操作是线程安全的,不需要同步。
例如,以下代码是线程安全的:
public class ThreadSafe
{
private int x;
public void setX(int x)
{
this.x = x;
}
}
它将似乎是多头的任务是原子的基础上,AtomicLong.java此方法:
public final void set(long newValue) {
value = newValue;
}
请注意,没有任何同步。
value
。是volatile
。
value
是volatile
没有任何的分配value
原子,它只是避免了“出版”的问题。
volatile
多头和