Java关键字volatile

繁华乱世

在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。


要解决这个问题,只需要像在本程序中的这样,把该变量声明为volatile(不稳定的)即可,这就指示JVM,这个变量是不稳定的,每次使用它都到主存中进行读取。一般说来,多任务环境下各任务间共享的标志都应该加volatile修饰。


Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

主 楼 发布于:2017-08-15 12:01:27回复
旅行者

但是,volatile不保证原子性操作

使用建议:在两个或者更多的线程访问的成员变量上使用volatile。当要访问的变量已在synchronized代码块中,或者为常量时,不必使用。

2 楼 发布于:2017-08-15 12:03:58
回复
旅行者

volatile:不稳定的。

3 楼 发布于:2017-08-15 12:17:44
回复
深海空气

秘诀:将手机用粽叶包好,放在锅里煮60分钟,手机电池续电能力将延长两倍,信号增强,并且打电话时能闻到粽子香味。

4 楼 发布于:2017-08-18 22:56:24
回复
麦道福

两个人热恋时,感情已经热烈得就要把彼此都燃烧了,还需要什么经营,但是时间一长了,冷却的爱情需要彼此都真诚地去维系与经营,爱情才不会变质。

5 楼 发布于:2017-09-26 03:25:23
回复
天使光芒97

开车无难事,只怕有新人!人生最大的悲哀莫过于看帖高兴了也不回帖!!

6 楼 发布于:2017-10-29 19:38:15
回复
安尼德鲁克

如果这就是爱,再转身的时候就该留下

7 楼 发布于:2017-12-10 14:24:20
回复
含玉外送茶22

人艰不拆

8 楼 发布于:2018-02-27 08:48:56
回复
杰宇

您的短信构思新颖,独具匠心,情节诡异,跌宕起伏,淡中显出不凡的文学功底,可谓是字字珠玑句句经典,是我辈应当学习之典范。

9 楼 发布于:2018-03-07 23:20:13
回复
字句倾听

火钳刘明

10 楼 发布于:2018-03-29 06:12:55
回复
我的天堂真好

好好学习,天天想上!

11 楼 发布于:2018-05-13 04:00:22
回复
给力男奋斗励志

我想早恋,但是已经晚了……

12 楼 发布于:2018-05-26 22:58:51
回复
神歆518

你远看像个要饭的,近看像个拾破烂的,仔细一看,原来是个看短消息的。

13 楼 发布于:2018-08-16 01:25:40
回复
小倩倩123

元芳你怎么看

14 楼 发布于:2018-09-30 01:21:10
回复
微笑风凌11

酒越久越醇,朋友相交越久越真;水越流越清,世间沧桑越流越淡。国庆重阳两佳节,何不把酒言欢共话巴山夜雨?

15 楼 发布于:2018-11-26 09:10:52
回复
笑颜如花_。

第一次评论啊,好紧张啊,该怎么说啊,打多少字才显的有文采啊,这样说好不好啊,会不会成热贴啊,我写的这么好会不会太招遥,写的这么深奥别人会不会看不懂啊,怎样才能写出我博士后的水平呢,半年写了这么多会不会太快啊,好激动啊

16 楼 发布于:2018-12-05 00:26:22
回复
赫威

一等男人家外有家,二等男人家外有花,三等男人花中寻家,四等男人下班回家,五等男人妻不在家,六等男人无妻无家。

17 楼 发布于:2018-12-24 08:02:37
回复
骄傲的马力

哥吃的不是面试是寂寞

18 楼 发布于:2024-02-09 06:25:01
回复
封心xint

我要是妞,早爱上我了……

19 楼 发布于:2024-07-24 14:49:07
回复

发表回复: