原子(atom)指化学反应不可再分的基本微粒,原子在化学反应中不可分割。原子操作指的是不可分割的整体,多线程的原子性指的是没有其他线程能够中断或检查正在原子操作中的变量。
从内存模型来看,直接保证的原子性变量操作包括 read、load、assign、use、store 和 write,我们大致可以认为基本数据类型的访问读写是具备原子性的。
从应用场景来看,JVM 保证原子性操作的主要有以下方式:
可见性是指当一个线程修改了共享变量的值,其他线程能够立即得知这个修改。
从应用场景来看,JVM 保证可见性主要有以下方式:
volatile 关键字,它是如何保证可见性的呢?
private static final int i;
private final int j;
static {
i = 0;
}
{
// 也可以选择在构造函数中初始化
j = 0;
}
有序性是指如果在本线程内观察,所有的操作都是有序的;如果在一个线程中观察另一个线程,所有的操作都是无序的。前半句是指“线程内表现为串行的语义(as is serial)”,后半句是指“指令重排序”现象和“工作内存与主内存同步延迟”现象。
从应用场景来看,JVM 保证有序性主要有以下方式:
原文:https://www.cnblogs.com/jmcui/p/12398138.html