1. volatile重要工作是避免线程脏读:当线程对volatile变量进行读操作时,会先将自己工作内存中的变量置为无效,之后再通过主内存拷贝新值到工作内存中使用。
2.volatile解决的是变量在多个线程之间的可见性,但不能完全保证数据的原子性。
3.现在JVM经过优化,已不会出现liveness failure 。所以没事别用volatile。
参考文章:
http://blog.youkuaiyun.com/soonfly/article/details/70918705
1. volatile重要工作是避免线程脏读:当线程对volatile变量进行读操作时,会先将自己工作内存中的变量置为无效,之后再通过主内存拷贝新值到工作内存中使用。
2.volatile解决的是变量在多个线程之间的可见性,但不能完全保证数据的原子性。
3.现在JVM经过优化,已不会出现liveness failure 。所以没事别用volatile。
参考文章:
http://blog.youkuaiyun.com/soonfly/article/details/70918705