Java并发编Volatile不能保证数据同步.docxVIP

  • 1
  • 0
  • 约 10页
  • 2018-05-30 发布于广东
  • 举报
Java并发编Volatile不能保证数据同步

Java并发编程:Volatile不能保证数据同步 在本篇博文中,将给出一个实例去验证volatile修饰的变量并不能保证其数据同步。 在本篇博文中,将给出一个实例去验证volatile修饰的变量并不能保证其数据同步。 Java内存模型规定了所有变量都存储在主内存中,每条线程都有自己的工作内存,线程的工作内存保存了被该线程使用到变量的主内存副本拷贝,线程 对变量的所有操作(读取,赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同线程也不能直接访问对方工作内存中的变量,线程间变量值的 传递均需要通过主内存来完成,线程,主内存,工作内存三者的交互关系如图所示。 当一个变量定义成volatile之后, 保证了此变量对所有线程的可见性,也就是说当一条线程修改了这个变量的值,新的值对于其它线程来说是可以立即得知的.此时,该变量的读写操作直接在主内存中完成. Volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性。 Volatile variables share the visibility features of synchronized, but none of the atomicity features. 虽然增量操作(x++)看上去类似一个单独操作,实际上它是一个由读取-修改-写入操作序列组成的组合操作,必须以原子方式执行,而

文档评论(0)

1亿VIP精品文档

相关文档