码迷,mamicode.com
首页 > 编程语言 > 详细

Java多线程volatile关键字

时间:2017-07-11 17:47:32      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:com   style   关键字   ash   原子性   volatile   java多线程   png   blog   

JVM中,分为JVM Client模式,JVM Server模式。两者区别并不大,但serve启动模式启动较慢,但一旦运行起来后,在hash和method call方面的效率,比Client模式效率高数十倍。

 

线程在读取数据时,首先从主内存中读取数据,保存在本地工作内存中,然后对数据进行修改,修改完毕后,写入本地工作内存中,再从工作内存写入主内存。示例图如下:

技术分享

JVM如果以Server模式启动时,为了线程的效率,线程在第一次读取数据后,将数据保存在工作内存中,之后读取数据时,均从工作内存中读取。但如果主内存修改了数据,则会导致工作内存的数据与主内存数据不一致。导致逻辑错误。

 

volatile关键字只可以修饰变量。当用volatile对某一个变量进行修饰后,每次读取变量均强制要求从主内存中读取,这样可以保证变量的一致性。保证数据的可见性,但并不能保证数据的原子性。

 

 

Java多线程volatile关键字

标签:com   style   关键字   ash   原子性   volatile   java多线程   png   blog   

原文地址:http://www.cnblogs.com/CloudStrife/p/7151333.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!