码迷,mamicode.com
首页 > 其他好文 > 详细

2、原子性、可见性与有序性

时间:2015-06-02 14:54:28      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

原子性(Atomicity):由Java内存模型来直接保证的原子性变量操作包括read、load、assign、use、store和write,我们大致可以认为

基本类型的访问读写是具备原子性的。

如果应用场景还需要一个更大范围的原子性保证,Java内存模型还提供了lock和unlock操作来满足这种需求。

 

可见性(Visibility):可见性是指当一个线程修改了共享变量的值,其他线程能够立即得知这个修改。Java内存模型是通过在变量修改后将

新值同步到主内存,无论是普通变量还是volatile变量都是如此,普通变量与volatile变量的区别是,volatile的特殊规则保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新。因此,可以说volatile保证了多线程操作时变量的可见性,而普通变量不能保证这一点。

 

有序性(Ordering):Java程序天然的有序性可以总结为一句话:如果本线程内观察,所有的操作都是有序的;如果在一个线程中观察另一个线程,所有的操作都是无序的。前半句是指“线程内表现为串行的语义”,后半句是指“指令重排序”现象和“工作内存与主内存同步延迟”现象。

2、原子性、可见性与有序性

标签:

原文地址:http://www.cnblogs.com/feijishuo/p/4546274.html

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