volatile个人理解
开篇:volatile保证了并发编程的可见性、有序性、部分原子性
可见性
被volatile修饰过的共享变量,当被线程读写的时候,从主存中获取数据,然后写入工作内存,使用完之后,再写入主存中去。
没有被volatile修饰的共享变量,只是被读取到线程的工作内存中,没有写入主存

有序性
cup写内存的方式分两种
同步写:cup把数值写入store buffer,然后写入内存
异步写:cup先把数值写入store buffer,等cpu空闲了,再把store buffer中的数值写入内存
因为异步写的存在,就设计了内存屏障,加了内存屏障,读写操作就只能按顺序执行,cpu无法乱序执行,这样就保证了读写的有序性,最终保证了异步刷回内存的时间更短
部分原子性
保证基本数据类型的原子性,int、char、short、内存地址等
i++分三步字节码指令,所以不能保证

浙公网安备 33010602011771号