对volatile的理解

定义:volatile是一种轻量级的同步机制,其属性有3个:

1.保证内存数据的可见性

  正常每个线程操作数据,都是先将数据从主内存加载到自己的工作内存,在工作内存中进行读取和赋值;而volatile的作用是将数据从主内存中读出,修改后再强刷会主内存,保证其他线程可以看到修改后的数据

2.不保证原子性

  每个线程修改数据后强刷回主内存时,会造成多线程之间数据的写覆盖;可以使用原子操作类来解决(AtomicInteger等)

3.禁止指令重排

  jvm为了提高性能,编译器和处理器都会对指令重排序;多线程环境下,线程交替运行,重排序的优化可能造成数据的不可控(重排序的事例可以看单例模型中使用volatile的原因)

原文地址:https://www.cnblogs.com/yayin/p/14158517.html