java之volatile关键字学习
Posted yangl517
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java之volatile关键字学习相关的知识,希望对你有一定的参考价值。
volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。
对于变量值的简单读写操作没有必要进行同步。
和优化,现在在多线程环境下volatile关键字的使用变得非常重要。
读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,
造成数据的不一致。
这个变量是不稳定的,每次使用它都到主存中进行读取。一般说来,多任务环境下各任务间共享的标志都应该加volatile修饰。
变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
离开同步代码块时才与共享成员变量的原始值对比。
这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化。
而volatile关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。
或者为常量时,不必使用。
由于使用屏蔽掉了VM中必要的代码优化,所以在效率上比较低,因此一定在必要时才使用此关键字。
参考:
http://www.cnblogs.com/dolphin0520/p/3920373.html
以上是关于java之volatile关键字学习的主要内容,如果未能解决你的问题,请参考以下文章