第七条:避免使用终结方法
1, 终结方法(finalizer)会让程序不稳定,性能降低,出现可移植性的问题。
2, Finalizer在c++中师析构器(destructors)的一部分,用作回收资源。在java中垃圾回收机制可以帮助完成。也可以通过try-finally在手动执行类似工作。
3, 在JVM中终结方法是被延迟执行的,也就是说,线程优先级低于其他类型的线程,不是第一时间你关闭的操作就被执行。所以切记不得用以在要求时间性上很严格的操作中。
4, System.gc和System.runFinalization这两个方法也不能保证终结方法一定执行。
5, 提供一个显示的终止方法,并要求每个类的客户端在确保每个实例不在有用的时候调用这个方法,并且实例必须记录自己是否已经被终结。如果方法终结后还有对象试图去访问,则必须检测这个域并抛出IllegalStateException异常。
6, 显示终止方法的典型例子是:InputStream,OutputStream,java.sql.Connection.Java.awt中的Graphics.dispose,Window.dispose,Image.flush.
7, 终结方法的好处:a,充当安全网。B,终止非关键的本地资源
8, 如果使用了终结方法,记得调用super.finalize。如果用终结方法做安全网,那么请记住终结方法的非法用法,如果终结方法于非final类关联起来了,请使用终结方法守卫者(finalizer guardian)确保子类调用了super.finalize
9,
分享到:
相关推荐
《Effective_C#中文版:改善C#程序的50种方法》读书笔记
《Effective Java》第三版中文版目录 第一章 介绍 1 第二章 创建和销毁对象 4 1 考虑用静态工厂方法替换构造器 4 2 当遇到多个构造器参
Effective+C#中文版:改善C#程序的50种方法.rar
Effective Java读书笔记.pdf
Effective java 3 学习记录
effective-java 自己用网上的翻译的html版本,生成的pdf版,仅供参考,仅供参考,仅供参考,仅供参考
effective java 读书笔记,第二版自己摘要并翻译,以备速查。
Effective Java读书笔记,记载了大部分我觉的有用的东西,前半部分有代码说明,但后半部分的代码,太过琐碎,就没有整理
15. 使类和成员的可访问性最小化 16. 在公有类中使用访问方法而非公有域 17.使可变性最小化:不可变类
【Effective Java】阅读笔记markdown 文件
50条有效使用STL的经验
effective-java 配套代码
本书详细介绍企业级计算技术中的常见问题,并描述使用企业级Java平台技术处理这些问题的方法。本书以若干条建议、揸南的形式,言简意赅地介绍了J2EE开发中的微妙之处。无论你是否是Java开发人员,本书都将为你开发...
The books in this series provide the detailed information developers need to build effective, robust, and portable applications and are an indispensable resource for anyone using the Java platform. ...
《Effective Java》读书分享.pptx
Effective Java Effective Java Effective Java
effective_java_new:Effective_java_new
Effective Enterprise Java