浏览 5412 次
锁定老帖子 主题:JAVA 里volatile关键字
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-03
Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。 这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化。 而volatile关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。 使用建议:在两个或者更多的线程访问的成员变量上使用volatile。当要访问的变量已在synchronized代码块中,或者为常量时,不必使用。 由于使用volatile屏蔽掉了VM中必要的代码优化,所以在效率上比较低,因此一定在必要时才使用此关键字。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-01-04
volatile操作是CPU的寄存器,迫使工作栈数据内存同步。
volatile保证了HB,但是性能消耗不大。 |
|
返回顶楼 | |
发表时间:2010-01-04
long和double 需要使用volatile修饰
|
|
返回顶楼 | |
发表时间:2010-01-05
volatile只能保证每次是获取的内存最新数据,并不能保证数据同步,适用于数据不会并发修改的情况。
|
|
返回顶楼 | |
发表时间:2010-01-11
volatile性能比较低,一定要慎用
尤其在对性能要求很高的系统! |
|
返回顶楼 | |