站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题惊奇的J2SE发现

惊奇的J2SE发现

摘要: 惊奇的J2SE发现


写了3年JAVA了, 今天无意看了看java所有的关键字,居然发现2个从来没用过,也不知道是什么含义?

transient 和 volatile

哪个高人解释解释~ 菜鸟洗耳尊听


呵呵
transient 高精度
volatile 多线程时可以保证同步


transient 序列化时忽略
volatile 强制同步


不过我只用过volatile,第一个写这两年也没有用过.


错了 strictfp才是高精度
transient 修饰字段用, 序更化时忽略此字段


transient,用来表示一个域不是该对象序列化的一部分。当一个对象被序列化的时候,
transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的。
例如ArrayList 序列化之后值会丢失,而size不变

多线程环境下volatile关键字的使用变得非常重要。在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。要解决这个问题,就该把该变量声明为volatile(不稳定的)即可,这就指示JVM,这个变量是不稳定的,每次使用它都到主存中进行读取。一般说来,多任务环境下各任务间共享的标志都应该加volatile修饰。




太抽象了,有没有实际使用情况


偶只知道意思,也麽用过


看看effective java




mark.
加深一下印象~~




volatile有点类似于C++中的auto,将值放在cpu寄存器中


加油啊!



transient 序列化时忽略
volatile 强制同步
这两个都用的少啊!用到的时候在去研究啊!


学习一招,谢谢!




这两个用的根本不少哦

比如我们做WS;需要在网络上传递的东西,常用transient;
有人说常用EJB远程调用,为什么不用呢? 焦点就是:一些可以通过已经有的内容恢复的内容,可以用这个关键字修饰





在线程中常用volatile ;不过现在更喜欢用ThreadLocal


o


upmark


mark


transient

这个我知道

用来修辞对象属性的.序列化对象的时候,忽略用它修辞的属性.


我好像也没有用过啊


transient 当被序列化的对象中一些属性具有不可重现的特点的时候,比如说是临时分配的ip地址等等,需要加上此关键字


volatile可以用ThreadLocal代替,线程变量副本,每一个线程拥有该变量的一个副本,互不干扰


↑返回目录
前一篇: 问个移位运算的问题
后一篇: 很烦啊,研究了大半个月的jsf,突然听说更流行的是spring,各位帮忙澄清一下,我已经快被弄晕了