`
renhongchao
  • 浏览: 121409 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java volatile @Transient

 
阅读更多
@Transient


   java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。   Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。

   上面的说白了就是在序列化的时候 或者往数据库存储的时候 不用管这个字段


volatile


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

Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。

这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化。

而volatile关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。

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


  使用volatile修饰的成员变量  每次获得的都是最新的数据
分享到:
评论

相关推荐

    Java_transient关键字

    ### Java中的transient关键字详解 在Java编程语言中,`transient`关键字是一个非常重要的概念,主要用于对象序列...同时,理解`transient`与`volatile`之间的区别也是处理复杂Java应用中的多线程和序列化问题的关键。

    java学习_java语法基础

    总结起来,Java的语法基础是编程学习的基础,包括关键字的使用、数据类型的理解和并发控制的关键字如volatile的运用。深入理解这些基础知识,对于编写高效、可靠的Java代码至关重要。在进行多线程编程时,合理利用...

    JAVA笔试总结 -- 非常全面

    native,transient,volatile,strictfp,CMM,synchronized,java socket,压缩与解压缩,多线程,垃圾回收算法,JVM ClassLoader,IO流,反射机制,JNDI, GUI布局管理器,JMS, Java Mail, JNDI reference,java事件处理...

    java面试100题

    Java 中的关键字有 native、strictfp、transient 和 volatile 等。 1. native 修饰符,表示方法是由另外一种语言(如 c/c++,FORTRAN,汇编)实现的本地方法。 2. strictfp 修饰符,表示类或方法遵守 IEEE-754 规范...

    Java Interview Questions for 5 years Experience.pdf

    在Java中,Volatile和Transient是两个关键字,用于修饰变量。Volatile变量保证了多线程环境下的可见性和有序性,确保变量的最新值被所有线程所见。Transient变量则标记了对象的某个字段不需要被序列化。 2. Vector...

    《Java技术指南2019》

    以及Java中的关键字,如transient、instanceof、volatile等的原理及用法。此外,还介绍了Java集合类的使用,枚举的用法和Java IO与NIO的使用和原理,Java反射机制,序列化和反序列化的原理和安全问题,以及注解的...

    Java面试要点(适用于2年以上经验,1年亦可)

    9. 熟悉 Java 中各种关键字:transient、instanceof、volatile、synchronized、final、static、const 集合类 1. ArrayList 和 LinkedList 和 Vector 的区别 2. SynchronizedList 和 Vector 的区别 3. HashMap、...

    java关键字总结文档

    ### Java关键字总结 Java是一种广泛使用的面向对象编程语言,它具备简单性、可移植性、高性能等特点。在Java中,关键字具有特殊的语法含义,不能用作标识符(例如变量名或方法名)。以下是对给定文件中提到的Java...

    Java序列化

    5. **transient和volatile关键字** - `transient` 关键字可以标记字段,表示这个字段不应该参与序列化过程,即不会被序列化到字节流中。 - `volatile` 关键字与序列化无关,但通常与多线程同步有关,序列化时不会...

    2021年JAVA面向对象程序设计练习题库B.doc

    Java 中的 volatile 关键字是指当前对象的状态是易变的。在 Java 中,我们可以使用 volatile 关键字来定义对象的易变状态。 Java 中的 transient 关键字是指当前对象的状态是暂时的。在 Java 中,我们可以使用 ...

    排序算法原理与实现(java)编银行JAVA笔试题二编程资料程资料

    const、volatile和transient也是java中的关键字,但他们的作用域不同。 题目3:继承 java中的继承是指一个类可以继承另一个类的成员变量和成员方法。例如,在题目中,Bclass继承了Aclass,并重写了go()方法。这样...

    JAVA语法大全(基本语法)

    JAVA关键字共有50多个,包括abstract、boolean、break、byte、case、catch、char、class、const、continue、default、do、double、else、extends、final、finally、float、for、goto、if、implements、import、...

    2021年Java大厂面试题整理大全

    1. 线程:掌握线程的创建、同步和协作,包括synchronized、volatile、ThreadLocal关键字的用法。 2. Executor框架:理解ExecutorService、ThreadPoolExecutor和Future接口的应用。 3. Lock接口:了解ReentrantLock、...

    java 对象流 的用法

    2. **transient和volatile关键字**:`transient`关键字用于标记不会被序列化的字段,而`volatile`关键字与序列化无关,但会影响到变量的可见性和同步性。 3. **序列化流的安全性**:序列化可能会暴露对象的内部状态...

    JAVA程序设计课件-变量.pptx

    * volatile * transient * native * strictfp * ... 四、运算符 Java中的运算符是用于执行数学运算、逻辑运算、赋值运算等操作的符号。Java中的运算符有: * 算术运算符:+、-、\*、/、%、++、-- * 赋值运算符:=...

    计算机Java核心编程笔记

    Java修饰符包括public、protected、private、final、void、static、strict、abstract、transient、synchronized、volatile、native等。 七、Java流程控制 Java流程控制语句包括package、import、throw、throws、...

    java面试题大全

    1. **关键字 transient 和 volatile**: - `transient` 是Java的关键字,用于标记字段,表明该字段的值不会在序列化过程中被持久化。这意味着当对象被序列化后,被`transient`修饰的变量将不会包含在序列化的表示中...

    Java入门——Java修饰词总结

    Java作为一门广泛使用的编程语言,拥有丰富的语法结构和关键字,其中修饰词(modifiers)是Java语言中的重要组成部分,用于限定类、方法、字段等的访问级别、生命周期以及特性。以下是对Java中11个修饰词的详细介绍...

Global site tag (gtag.js) - Google Analytics