国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > java基础 > java volatile的特性是什么

java volatile的特性是什么

头像

小妮浅浅

2021-01-09 09:32:533663浏览 · 0收藏 · 0评论

在对java变量进行修饰时,有一种修饰符专门负责这类操作,也不用担心它的用法出错,那就是volatile。和synchronized最明显的区别是只针对变量,其他的类型不修饰。相信大家对它的使用还不是很了解,下面我们就volatile的概念及其三个特性带来分析,弄清楚这些特性的原理。

1.volatile概念

volatile通常被比喻成"轻量级的synchronized",也是Java并发编程中比较重要的一个关键字。和synchronized不同,volatile是一个变量修饰符,只能用来修饰变量。无法修饰方法及代码块等。

2.volatile三个特性

(1)保证可见性

当一个变量被声明为volatile时,在编译成会变指令的时候,会多出下面一行:

0x00bbacde: lock add1 $0x0,(%esp);

这句指令的意思就是在寄存器执行一个加0的空操作。不过这条指令的前面有一个lock(锁)前缀。

(2)不保证原子性

volatile 变量的 i++,分三步:

读取 i 变量的值,如果之前有其它线程写入,则当前线程工作内存中的变量值会失效,要从主存重新读取;

在工作内存中执行 i+1;

i 的新值立刻写入主存,并使其它线程工作内存中的 i 变量失效。

volatile 保证变量 i 的写入为原子性,实际上前两步也是原子性,但多个原子性操作组合在一起就不是原子性了。所以 volatile 变量的 i++ 操作仍然是非原子性操作。

(3)保证有序性

例如:

a = 1;
b = 1;
x = 1;
c = 1;
d = 1;

如果 x 是 volatile 变量,其它都不是,那么:

a,b 的操作可以被重排序,即 a 有可能在 b 后面,但 a,b 一定不会重排序到 x 的后面;

c,d 的操作可以被重排序,即 c 有可能在 d 后面,但 c,d 一定不会重排序到 x 的前面。

以上就是java volatile的特性介绍,相信经过本篇的分析和代码示例,大家已经能够弄清楚 volatile这个变量修饰符的基本特征了,在以后的使用时才不容易出错。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

《老板送醉酒丈夫回家》| 婆媳双飞杨钰莹阅读| 亚洲乱熟女一区二区三区山口珠理 | 《被按摩的人妻4》| 《熟妇的荡欲》HD中字| 小雪解开乳罩给老杨摸| 日韩精品一区二区三区| 敌伦交换小敏小静小雅第1集| 麻豆视频| 伊蕾尔| 夏树唯| 白带内裤拉丝尿液| 90多岁老太太阴部下坠怎么办| 老头跪在两腿之间吃奶| 《蹂躇》无删减版| 《性房纵欲》在线观看| 134VCC影院免费观看| 《乳牛牧场的奶牛娘》动漫| 美女比基尼游泳图片视频| 邻居少妇让我爽了三次| 女人用嘴巴吸出精子会反流吗 | 苍老师《荷尔蒙》| 老婆同意了别人轮流联系我| 《美国伦理4女警》| 少女たちよ观看免费高清电视剧| 爸爸的擎天柱让我看第二集| 久久无码亚洲成A人片| 杨利伟的简介| 亚洲AV天堂久久精品9966| 6969影院免费观看电视剧大全| 男按摩师舌头伸进去了SPA漫画| 熟母10和熟母10的区别| 日韩AV无码-区二区三区96| 姨母妈9| 妈妈总是晚上装睡配合孩子| 一枪战三母免费观看完整版| 小天马| 华为新品手机发布| 《大尺度吃奶做爰》电影| 欧美杂志| 混乱的都市