volatile个人理解

开篇:volatile保证了并发编程的可见性、有序性、部分原子性

可见性

被volatile修饰过的共享变量,当被线程读写的时候,从主存中获取数据,然后写入工作内存,使用完之后,再写入主存中去。

没有被volatile修饰的共享变量,只是被读取到线程的工作内存中,没有写入主存

有序性

cup写内存的方式分两种

​ 同步写:cup把数值写入store buffer,然后写入内存

​ 异步写:cup先把数值写入store buffer,等cpu空闲了,再把store buffer中的数值写入内存

因为异步写的存在,就设计了内存屏障,加了内存屏障,读写操作就只能按顺序执行,cpu无法乱序执行,这样就保证了读写的有序性,最终保证了异步刷回内存的时间更短

部分原子性

保证基本数据类型的原子性,intcharshort内存地址

i++分三步字节码指令,所以不能保证

posted @ 2021-03-02 16:29  yzwine  阅读(51)  评论(0)    收藏  举报