`

Java中volatile关键字和transient关键字

 
阅读更多

       volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到主内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
    Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。
    这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化。
而volatile关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。
    使用建议:在两个或者更多的线程访问的成员变量上使用volatile。当要访问的变量已在synchronized代码块中,或者为常量时,不必使用。 
    由于使用volatile屏蔽掉了VM中必要的代码优化,所以在效率上比较低,因此一定在必要时才使用此关键字。

 

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

分享到:
评论

相关推荐

    Java基础之关键字_Java基础之关键字_源码

    在编程语言的学习中,了解和掌握关键字是至关重要的一步,特别是在Java这种强类型的语言中。本文将深入探讨Java中的关键字,这些关键字是Java语法结构的基础,它们被Java编译器特殊处理,有着特定的含义和功能。 ...

    JAVA中的关键字和保留字

    abstract - 1 - boolean - 2 - break - 2 - byte - 2 - case - 3 - catch - 3 - char - 4 - class - 4 - continue - 5 - ...transient - 17 - try - 17 - true - 18 - void - 18 - volatile - 18 - while - 18 -

    JAVA中的关键字和保留字[归类].pdf

    在Java编程语言中,关键字和保留字是具有特殊含义的词汇,它们被编译器识别并用于控制程序的行为。以下是对Java中部分关键字的详细解释: 1. `abstract`:抽象关键字,用于声明类或方法。抽象类不能被实例化,但...

    JAVA中的关键字和保留字.doc

    Java编程语言中包含了一系列的关键字和保留字,这些词汇具有特殊的含义,用于构建程序结构和控制程序流程。关键字是Java语言预定义的标识符,它们在编译器中有特殊的解释,不能作为变量、函数名或其他标识符使用。...

    Java关键字详细解

    这篇文档《Java关键字详细解》将深入探讨Java中的关键字及其用途。 首先,我们来看看Java中的主要关键字。`public`、`private`、`protected`是访问修饰符,用于控制类、方法和变量的访问权限。`public`可以被任何...

    java 关键字查询文档

    Java 共有 50 多个关键字,它们包括但不限于 `abstract`、`assert`、`boolean`、`break`、`byte`、`case`、`catch`、`char`、`class`、`const`(虽然未使用)、`continue`、`default`、`do`、`double`、`else`、`...

    Java基础标识符关键字数据类型PPT教案学习.pptx

    private、public、protected、final、static、abstract、synchronized、volatile、strictfp、native、transient 等修饰符关键字;try、catch、finally、throw、throws 等异常处理关键字;new、extends、implements、...

    java编程全部关键字解释

    Java编程语言的关键字是语言的核心组成部分,它们具有特殊含义,被Java编译器解析和执行。下面我们将逐一探讨这些关键字的详细解释。 1. `abstract`:`abstract` 关键字用于声明抽象类和抽象方法。抽象类不能直接...

    java51个关键字详解

    Java编程语言中有51个关键字,它们在程序中扮演着至关重要的角色,用来定义类、接口、变量、方法以及控制程序流程。以下是一些主要的关键字及其解释: 1. `abstract`:抽象关键字,用于声明抽象类和抽象方法。抽象...

    01-Java语言基础(关键字)

    以上仅是Java关键字的一部分,还有许多其他关键字,如`synchronized`, `volatile`, `transient`, `native`, `strictfp`等,它们各自承担着特定的功能。理解和熟练使用这些关键字是成为一名合格的Java程序员的基础。...

    Java关键字

    50. **volatile** - 用于共享变量,确保多线程环境中的可见性和顺序一致性。 51. **while** - 循环结构,先检查条件再执行循环体。 以上就是Java的48个关键字的概述,它们构成了Java编程的基础,理解并熟练掌握...

    源码关键字统计.rar

    在Java编程语言中,关键字是预定义的、具有特殊含义的词汇,它们是构成程序语法结构的基础元素。这篇关于“源码关键字统计”的主题旨在分析Java源代码文件,并计算其中出现的关键字数量。这个任务涉及到文件读取、...

    search_keyword12.rar_Java关键字

    - 其他关键字:如void、static、final、abstract、native、transient、volatile等,各有特定用途。 2. Java关键字应用示例: - `public class HelloWorld {` 这行代码定义了一个公共类HelloWorld,可供其他类访问...

    java中“53”个关键字(含2个保留字)

    在Java编程语言中,关键字是具有特殊含义的预定义标识符,它们被Java解析器用来识别语法结构。这些关键字不能用作变量名、类名或方法名。在Java中,一共有53个关键字,包括两个保留字。下面将详细阐述这些关键字的...

    JAVA关键字总结(整理后最全最详细)

    - `volatile` 关键字用于确保多线程环境中的变量可见性和有序性。 48. `while`: - `while` 循环在条件满足时重复执行代码块。 以上是Java关键字的全面总结,它们在编写Java程序时扮演着至关重要的角色,帮助...

    JAVA关键字

    Java关键字是编程的基础,它们是Java语言预定义的、具有特殊含义的标识符,不能作为变量名、方法名或类名。...通过深入学习和实践,开发者能够更好地理解和利用Java的关键字来构建复杂的应用程序。

    java关键字,适合新手的ppt

    在方法相关的关键字中,`return`用于返回方法的结果,`void`表示方法不返回任何值。`package`和`import`管理类的组织和导入。字面值常量如`false`, `true`, `null`是预定义的,而`return`和`void`与方法的定义和调用...

    第02章 Java编程基础 05 关键字与转义字符

    Java编程基础是学习Java开发的重要环节,而关键字和转义字符是其中不可或缺的两个概念。在Java中,关键字是被Java语言预定义并赋予特殊含义的词汇,它们不能作为变量、类名或方法名等标识符使用。转义字符则是用于在...

    java关键字的使用详情

    11. ** volatile**: `volatile`关键字确保共享变量的可见性和有序性,主要用于多线程环境中的共享数据。 12. **transient**: 当一个变量被声明为`transient`时,表明它不会被序列化。 13. **this**和**super**: `...

    java关键字和java命名规范.pdf

    Java编程语言的关键字和命名规范对于编写可读性高、易于维护的代码至关重要。关键字是Java语言预定义的具有特殊含义的词汇,它们在程序中有着特定的作用。下面将详细讲解Java的关键字以及命名规范。 1. 关键字: -...

Global site tag (gtag.js) - Google Analytics