Java中的transient,volatile和strictfp关键字

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

原文转自:http://www.iteye.com/topic/52957

Java中的transient,volatile和strictfp关键字 

    如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如: 
Java代码   收藏代码
  1. class T {  
  2.    transient int a;  //不需要维持  
  3.    int b;  //需要维持  
  4. }  

    这里,如果T类的一个对象写入一个持久的存储区域,a的内容不被保存,但b的将被保存。 
    volatile修饰符告诉编译器被volatile修饰的变量可以被程序的其他部分改变。在多线程程序中,有时两个或更多的线程共享一个相同的实例变量。考虑效率问题,每个线程可以自己保存该共享变量的私有拷贝。实际的变量副本在不同的时候更新,如当进入synchronized方法时。 
    用strictfp修饰类或方法,可以确保浮点运算(以及所有切断)正如早期的Java版本那样准确。切断只影响某些操作的指数。当一个类被strictfp修饰,所有的方法自动被strictfp修饰。 
    strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。 
你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,例如下面的代码: 

1. 合法的使用关键字strictfp 
Java代码   收藏代码
  1. strictfp interface A {}  
  2.   
  3. public strictfp class FpDemo1 {  
  4.     strictfp void f() {}  
  5. }  

2. 错误的使用方法 
Java代码   收藏代码
  1. interface A {  
  2.     strictfp void f();  
  3. }  
  4.   
  5. public class FpDemo2 {  
  6.     strictfp FpDemo2() {}  
  7. }  

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



Keys: volatile 

使用对象:字段 

介绍:因为异步线程可以访问字段,所以有些优化操作是一定不能作用在字段上的。volatile有时 

可以代替synchronized。 




Keys:transient 

  使用对象:字段 

  介绍:字段不是对象持久状态的一部分,不应该把字段和对象一起串起。
配置思科交换机冗余链路汇聚 本文对交换机端口汇聚配置进行说明 阅读详情

相关推荐

Winget安装失败:深入解析InternetOpenUrl()错误0x80072efd的根源与修复

本文深入解析了使用Winget时遇到的InternetOpenUrl()错误0x80072efd。该错误通常源于DNS解析失败、网络代理配置不当或系统安全策略冲突,导致无法连接软件源。文章提供了从刷新DNS、修改Hosts文件到配置代理等一套完整的诊断与修复方案,帮助开发者快速解决安装障碍,恢复Winget的正常使用。

weixin_29290259的博客 876

Java transient

ava关键字Transient       转自http://horst.sun.blog.163.com/blog/static/348849612007614494492/       翻译自http://www.devx.com/tips/Tip/13726。       Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据

sinat_15584029的专栏 464

高并发网络爬虫实践(欧赔、亚盘、大小指数数据爬取)

本文通过对一个实战化的高并发网络爬虫脚本进行深度模块化剖析,展示了如何构建一个兼具性能、健壮性易用性的数据采集工具。核心设计思想总结模块化与单一职责: 每个函数都专注于解决一个特定问题,无论是网络请求、数据解析还是文件操作。并发与效率: 通过ThreadPoolExecutor实现了高效的并发抓取,极大缩短了总耗时。健壮性与容错: 强大的重试机制、细致的异常处理线程安全的文件写入,保证了程序在复杂网络环境下的稳定运行。断点续传: 精心设计了进度记录与恢复机制,使得大规模抓取任务变得轻松可控。

猫敷雪 428

javastrictfp关键字,java strictfp关键字用法大全详解

一、strictfp关键字简介strictfpJava中提供的一个保留关键字,该关键字是从这第java JDK2版本儿开始出现的一直沿用到现在,只不过很多情况下都不怎么使用,所以容易被大家遗忘,因此今天我们来介绍一下这个关键字的用法使用详解案例。strictfp实际上是对浮点类型做精确运算的一个关键字,实际意思是FP-strictfpJava中的浮点类型有floatdouble两种,当这两...

weixin_32308155的博客 6668

strictfp关键字详解

BigDecimal的运算逻辑完全在Java的标准库中实现,并不依赖于任何特定平台的硬件或操作系统的浮点运算单元,所以在任何平台上使BigDecimal进行相同的计算时,结果都是一致的,但并不是它在所有场景下都是最合适的选择。在没有使用strictfp时,Java虚拟机可能利用硬件浮点运算的特性来优化计算,这就可能导致在不同平台上,浮点运算的结果不完全一致。而且大多数应用程序的浮点计算已经足够一致,满足了实际需求,因此不需要额外的strictfp关键字来保证浮点运算的一致性,strictfp了解即可。

努力分享一些干货 1282

java中不常见的关键字strictfp

1.strictfp, 即 strict float point (精确浮点)。   strictfp 关键字可应用于类、接口或方法。使用 strictfp 关键字声明一个方法时,该方法中所有的floatdouble表达式都严格遵守FP-strict的限制,符合IEEE-754规范。当对一个类或接口 使用 strictfp 关键字时,该类中的所有代码,包括嵌套类型中的初始设定值...

lipingadjfa的博客 323

Java关键字之native,strictfptransientvolatile

Java关键字(keywords) abstract    default    if            private      this boolean     do         implements    protected    throw break       double     import        public       throws byte

专注JAVA开发 632

Java 关键字strictfpvolatiletransient

1. strictfp 浮点运算有两种运行模式:严格浮点模式非严格浮点模式。当我们执行严格浮点运算时,在所有的Java虚拟机实现上运行结果都是精确相等的。 strictfp可以用来修饰类、接口方法。 当声明一个方法是strictfp时,该方法中的所有代码都会遵循严格限制规则来执行。 当使用是strictfp来修饰类或接口时,其中的所有代码都会在严格模式下执行。 2. volatile Ja...

假装你是大灰狼的专栏 517

Java中的native,transientvolatilestrictfp关键字

Java中的native,transientvolatilestrictfp关键字 Java中的native,transientvolatilestrictfp关键字 博客分类:J2SEJavaJ#JNIVC++Fortran写道1,native是方法修饰符。Native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法。一般用于JNI中。  pub

gigipop的专栏 600

Java不常用的关键字介绍 native,strictfptransientvolatile

转贴来自:http://www.qinglearn.com/article/chengxu/JAVA/info-12099.htmlabstract default if private this  boolean do implements protected throw  break double import public throws  byte else instanceof ret

天平的专栏 1078

Java关键字transientvolatile、instanceof、strictfp、assert

Java关键字transientvolatile、instanceof、strictfp、assert

qq_34896730的博客 603

java 关键字: volatilestrictfptransient

1. volatile 入门 (1). javavolatile关键字的含义 (2). 初学Java多线程:慎重使用volatile关键字 进阶 (1). Java 理论与实践: 正确使用 Volatile 变量 (2). 关于原子操作volatile关键字~ 扩展  Java 原子操作 2. strictfp Java

CodingMan 2288

javatransientvolatilestrictfp关键字说明

1、transient,用于对象序列化。 transient是类型修饰符,只能用来修饰字段。在对象序列化的过程中,标记为transient的变量不会被序列化。 示例: class Test { transient int a; // 不会被持久化 int b; // 持久化 } 当类Test的实例对象被序列化(比如将Test类的实例对象 t 写入硬盘的

qingchen191的专栏 971

java strictfp,Java关键字之native,strictfptransientvolatile(转载)

java Native Method初涉2. strictfp修饰类方法,意思是FP-strict,精确浮点,符合IEEE-754规范的。当一个class或interface用strictfp声明,内部所有的floatdouble表达式都会成为strictfp的。Interfacemethod不能被声明为strictfp的,class的可以。Example:Java代码 strictfpint...

weixin_35990358的博客 280
上一篇: Java网络爬虫的实现
下一篇: eclipse 加亮选中部分
hejinwei_1987
博客等级 码龄16年 18粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值