国产成人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这个变量修饰符的基本特征了,在以后的使用时才不容易出错。

关注

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

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

女人大阴唇夹缝是阴虚还是阳虚 | 9.1免费漫画网站NBA| 学校教室里可以插自己电脑吗| 女性INS大片跳舞| 男牛把困困放入女生困困洞里 | 亚洲人成色777777在线播放| 妻子的姐姐免费观看大全电视剧| 小妈爱上继子免费观看电视剧| 白日梦我电视剧免费观看| 老公把舌头放进我B里搅拌| 自己怎么玩隐私位置游戏| 《性爽2》电影| 蜜桃2| 乱肉辣伦短文(全肉)| 女性抹胸开襟哺乳衣的注意事项| 做爰高潮A片(毛片)| 洞洞饿了1-36集全免费| 苍老师电影全集免费播放在线观看 | 国外成品网站1688入口在哪| 妈妈醉酒后把我当爸爸电视剧| 公交车NP粗暴H强J玩弄| (NP、高H、纯肉)高H高辣| 两个奶头被吃得又翘又肿特别疼 | 日韩无矿砖区转吗| 《囚禁空姐》电影免费观看| 他的大手在秘密花园游走漫画| 五姑娘影院在线观看免费版电视剧| 蜜桃免费观看电视剧高清完整版| 少妇激情偷公乱140章| 玉蒲团之官人我要| 9.1萝卜黄| 两个人免费完整版在线观看| 少女たちよ观看免费高清电视剧| 《交换做爰》在线观看| 内衣走秀| 日本《暴力强伦轩》| 扌击辶鬲的小说父女| 丫头把腿开大让我添添电影| 《疯狂瑜伽》完整版| 日本妈妈DNA和儿子DNA区别| 把腿扒开让我添30分钟