java——volatile的可见性不能保证线程安全

volatile:

  1.保证变量对所有线程的可见性(但是由于java里面的运算并非原子操作,导致volatile变量的运算在并发下一样是不安全的)

用代码试过,确实是这样的,原因:有可能同时多个thread副本数据同时覆盖原始数据,这时就没有某个线程通知其他线程副本数据过期,导致数据出现问题。

  2.禁止指令重排

这东西会比synchronized快一些

read load use assign store

原文地址:https://www.cnblogs.com/gaoquanquan/p/10496691.html