首页 >  软件开发 >  正文

Java线程模型的规则与共享变量可见性


https://www.panxw.com    栏目:软件开发    标签: Java , 线程 , 模型     日期:2015-05-11    阅读:

一、线程模型规则

1、线程对所有共享变量的操作必须在各自工作内存中进行,不能直接从主内存中读写。
2、不同线程之间无法直接访问其它线程工作内存中的变量,线程间变量值的传递需要通过主内存来完成。

二、共享变量可见性:synchronized与volatile

synchronized
必须使用同一把锁,可使变量相关操作原子性。
a,线程解锁前,会将工作内存中共享变量的最新值刷新到主内存中。
b,线程获得锁之前,将从主内存中读取共享变量的最新值,更新到工作内存中。

volatile:
通过加入内存屏障和禁止重排序来实现。不保证volatile变量相关操作原子性。
a,对volatile变量写操作时,对写操作后加入store屏障指令。
b,对volatile变量读操作时,对读操作后加入store屏障指令。

参考:http://imooc.com/learn/352

本文为原创文章,转载请注明出处:Panxw's Blog » Java线程模型的规则与共享变量可见性
如果本站内容帮助到了你,请记得收藏、分享,或打赏支持,谢谢!

上篇: Windows下msysgit最新下载地址