在《深入理解JVM》以及《并发编程实战》中都有看到volatile关键字,但是总是一知半解,在网上看到一篇比较好的文章,讲的大多数都能理解,希望给大家借鉴下。对于一个经典例子:
此对象非线程安全的,此文中也做了介绍,但是可能不是那么好理解,在此我提出几个概念,或许会有助于大家的理解:
这个问题就在于,虽然更改后主存使得所有的工作缓存中的值都无效,但是,inc++包括以下几个操作:读取inc值,加一,写入。如果已经读取了inc值了,线程不会再执行读操作,即不会发现缓存已经失效了,所以。。。。。
注意主内存,处理器高速缓存,操作数栈。
参考文章:http://www.cnblogs.com/dolphin0520/p/3920373.html
本文通过一个非线程安全的经典例子,深入浅出地讲解了Java中volatile关键字的作用机制。主要探讨了volatile如何确保变量的可见性和有序性,以及它在多线程环境中的行为。
255

被折叠的 条评论
为什么被折叠?



