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

java关键字:Volatile,Transient,strictfp

    博客分类:
  • java
阅读更多

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

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

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

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

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

由于使用volatile屏蔽掉了VM中必要的代码优化,所以在效率上比较低,因此一定在必要时才使用此关键字。

Transient

使用对象:字段

  介绍:字段不是对象持久状态的一部分,不应该把字段和对象一起串起。简单的说,就是串行化的时候,不串行化该关键字修饰的字段。

 

 

Key: strictfp**

使用对象:类、方法

自Java2以来,Java语言增加了一个关键字strictfp,虽然这个关键字在大多数场合比较少用,但是还是有必要了解一下。

strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。

你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,例如下面的代码:

1. 合法的使用关键字strictfp

strictfp interface A {} public strictfp class FpDemo1 {     strictfp void f() {} }

2. 错误的使用方法

interface A {     strictfp void f(); } public class FpDemo2 {     strictfp FpDemo2() {} }

一旦使用了关键字strictfp来声明某个类、接口或者方法时,那么在这个关键字所声明的范围内所有浮点运算都是精确的,符合IEEE-754规范的。例如一个类被声明为strictfp,那么该类中所有的方法都是strictfp的。

分享到:
评论

相关推荐

    java 关键字查询文档

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

    Java标识符、关键字和保留字

    - 修饰方法、类、属性和变量关键字:如`static`、`final`、`native`、`synchronized`、`transient`、`volatile`、`strictfp`,用于提供额外的信息来修饰类、方法和变量。 - 异常处理关键字:如`try`、`catch`、`...

    Java的关键字与标识符小结

    9. 其他关键字:包括native、strictfp、transient、volatile、assert、goto、const和enum等8个关键字。 标识符是用户在编程时给类、变量、常量、方法(函数)、语句块等起的名字。Java语言中标识符不包括关键字,而...

    java关键字、保留字

    ### Java关键字详解 #### 概述 Java是一种广泛使用的面向对象编程语言,它拥有丰富的关键字集,用于控制程序的行为和结构。Java关键字是由Java语言预定义的标识符,具有特殊的含义,不能用作变量名、方法名或类名等...

    java关键字

    ### Java关键字详解 #### 前言 Java作为一种广泛使用的编程语言,在软件开发领域占据了重要的地位。Java的关键字,即保留字,是Java语言中具有特殊意义的标识符,它们预定义并保留用于语言本身的语法结构。理解这些...

    JAVA关键字

    Java关键字是编程的基础,它们是Java语言预定义的、具有特殊含义的标识符,不能作为变量名、方法名或类名。以下是对50个Java关键字的详细解释: 1. **abstract**:用于声明抽象类或抽象方法,不包含具体实现。 2. ...

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

    Java关键字和命名规范是Java编程语言中的基础概念,它们对于编写清晰、规范的代码至关重要。Java关键字是Java语言内置的、具有特殊用途的保留字,而命名规范则是关于如何给类、方法、变量等命名的约定。 ### Java...

    Java关键字

    Java关键字是编程的基础,它们是Java语言预定义的标识符,具有特殊含义并被Java编译器识别。在Java中,一共有51个关键字(包括保留字),但描述中提到的是48个,可能是因为某些关键字在特定上下文不常用或者被归类到...

    java关键字.pdf

    Java关键字是Java语言中预先定义的、具有特殊意义的单词,它们在Java程序中有着特殊的用途,比如用来声明数据类型、定义流程控制语句等。根据提供的部分内容,可以将Java的关键字分类并阐述它们的作用。 1. 访问...

    java关键字,适合新手的ppt

    修饰符如`private`, `public`, `protected`定义了访问权限,`final`, `static`, `abstract`, `native`, `synchronized`, `volatile`, `strictfp`, `transient`分别用于定义不可变对象、静态成员、抽象方法、本地方法...

    Java关键字的用法

    ### Java关键字的用法 Java作为一种广泛使用的编程语言,拥有丰富的关键字来支持其核心功能与特性。本文将详细介绍部分重要的Java关键字及其用法。 #### 1. `abstract` `abstract`关键字用于定义抽象类或抽象方法...

    Java的关键字与保留字

    在深入探讨Java的关键字与保留字之前,我们首先需明确两个概念:关键字和保留字。在编程语言中,关键字是预定义的具有特殊含义的标识符,它们在编译时被解析器识别并执行特定的功能;而保留字则是语言设计者为未来...

    最完整的java关键字解释.doc

    ### 最完整的Java关键字解释 #### 1. Abstract - **定义**:`abstract`关键字用于修饰类或方法,表示该类或方法具有抽象属性。 - **用途**: - `abstract`类可以被继承,但是不能被实例化。 - `abstract`方法不...

    JAVA关键字,很详细的总结。

    ### JAVA关键字,很详细的总结。 在Java编程语言中,关键字是具有特定意义的预定义标识符,它们在语言结构和语法中扮演着关键角色。以下是对Java关键字的详细解析,旨在帮助开发者深入理解并有效利用这些核心概念。...

    java关键字............

    ### Java关键字详解 #### 概述 Java是一种广泛使用的面向对象编程语言,它以其平台无关性、健壮性和安全性而闻名。Java中的关键字是预定义的保留字,具有特殊的意义和用途,不能用作标识符(如变量名、类名等)。在...

Global site tag (gtag.js) - Google Analytics