您的位置:首页 > 编程语言 > Java开发

解析==java volatile关键字

2015-01-13 14:32 253 查看
java volatile

程序多线程执行环境:

主内存

线程A +  线程A内存

线程B +  线程B内存

1.没有同步机制的一般情况下,jvm会对变量复制一份

主内存 (normal_var)

线程A +  线程A内存 (normal_var_copy_A)

线程B +  线程B内存 (normal_var_copy_B)

所以可以看到线程A和B是各自操作自己的复制变量,需要的时候才会写入主内存里。

2.使用同步机制volatile关键字,jvm不会复制变量

主内存 (normal_var)

线程A +  线程A内存 (normal_var)

线程B +  线程B内存 (normal_var)

所以可以看到线程A和B是操作主内存里的变量。

但是,变量一定是拥有原子特性的。

private volatile int i;

i++ (读值-修值-写值) 是一串原子的组合,不能保证同步,只可以是同一块内存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: