volatile:当新建一个线程时,为了提高效率,
他会将某些数据拷贝一份到自己这里,所以有可能
你在线程中修改了数据,但是修改的只是你自己的备
份而已,而不会影响到原始的数据。或者其他的线程修改了数据,
你这边却看不到,这样就可能对你的多线程程序造成影响。
使用volatile的时候,则不会对这个变量进行私有拷贝,这样,你的
多线程程序就不会出错了。但是需要注意的是,做私有拷贝对于提高
程序的效率,非常有益,所以记得只在必须的时候才使用volatile。
transient:表示当前变量在序列化的时候,不要进行序列化,
比如对于密码等敏感信息,或者一些本来序列化就没有意义的东西,
诸如数据库连接,可以使用此此关键字进行修饰。
附注:
1.在c++中的volatile,是禁用寄存器优化,这样的话,变量就是直接
存在存在内存的,就不会存在因为线程A将变量存在寄存器里,然后访问
的都是寄存器的,而线程B对于变量的修改,A就无法感知了,导致多线程
程序的错误。
2.一个小知识,在java中,long和double的赋值不是原子操作,而且他的基本
类型的赋值则都是原子的,但是如果加上volatile的话,则读写是原子的。
对引用(无论32bit或者64bit)的读写总是原子的。
http://blog.163.com/javaee_chen/blog/static/17919507720113138059122/
相关推荐
java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java ...
C语言中关键字volatile的作用,使用说明和例子
Java并发编程:volatile关键字解析
主要讲述java线程volatile关键字
volatile是java中的关键词之一,这篇文章主要给大家介绍了关于Java中volatile关键字的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
多方面解读Java中的volatile关键字.rar
volatile这个关键字,不仅仅在Java语言中有,在很多语言中都有的,而且其用法和语义也都是不尽相同的。这篇文章主要介绍了Java中的volatile关键字,需要的朋友可以参考下
java里的volatile关键字详解
作为指令关键字,volatile的作用是确保本条指令不会因编译器的优化而省略,且要求每次直接读值。下面来一一说明
java语言的volatile教程,java语言的volatile关键字到底怎么用
主要介绍了Java中的关键字volatile,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候可以万事大吉。 Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 ...
在嵌入式编程中,经常会遇到编译器优化问题,对关键字volatile的应用也很频繁,但是绝大多数人都不清楚它的意义与原因,本文将做一个详细介绍
java里的volatile关键字详解.pdf
主要为大家解析了java中volatile关键字,经常有人把volatile关键字和synchronized或者lock混淆,本文就为大家好好区分,感兴趣的小伙伴们可以参考一下
本文主要介绍 volatile 的使用准则,以及使用过程中需注意的地方,感兴趣的朋友一起看看吧
volatile 的意思是“易失的,易改变的”。...关键字volatile有什么含意?并给出三个不同的例子。 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
java volatile 关键字 学习
深入了解java并发的volatile关键字的底层设计原理.docx
在程序员面试宝典中提到“关键字volatile的面试例题是考查嵌入式编程”,中间有一段解析: 回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的基本的问题。搞嵌入式的家伙们经常同...