Effective Java 学习笔记 (7)
Finalizer 不可计划的,也是危险的,一般也是不必要的.
不能在finalizer中放任何与依赖时间相关的操作,因为你不知道它什么时候被执行. 比如在finalizer中关闭文件的做法就是错误的, 根据JVM的实现方式不同,有可能导致打开的文件数过多而无法再打开文件.
也不能在finalizer中改变状态,如给数据库解锁等.
finalizer还能带来严重的性能问题,
显示的调用的终止函数可以采用try -finally的语句
当然,合法的使用finalizer有两种情况:
一种是做为最后的一道关卡,检测用户是否有没有被释放的资源,如果有则释放它,并打印出警告. 虽然不提倡在finalizer中释放资源,但晚释放总比不释放好(beter later than never)
还一种合法使用就是在使用 native方法的时候.
要注意,finallizer没有承继关系,在子类中必须显示调用父类中的函数.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mutsinghua/archive/2010/01/23/5248540.aspx
相关文档:
Spring Framework 【Java开源 J2EE框架】
Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的 Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用 ......
Beanshell 【Java开源 动态语言】
Beanshell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性。BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和语法。它将脚本化对象看作简单闭包方法(simple method closure)来支持,就如同在Perl和JavaScri ......
本文提供java多线程分别定时读写同一个文件的样例,其中两个线程,一个每分钟写入当前时间到指定文件,另一个线程读出每分钟新写的内容。
使用简单的Thread.sleep技术实现定时
package test.thread;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
im ......
今天在逛论坛的时候看到有人津津乐道:从C++干到转型为java是退步
我不认为是这样,首先应该一个人的兴趣,加上这门语言,这门工作是否符合你
干自己喜欢的语言编码才是最重要的,当然java比较容易点,我也是这样认为的
但是java并不是大家所说的那么容易,当今社会谁不敢说自己会ssh,当是自己问心自己学得有多好,
在 ......
有时,我们在写一个构造函数时,经常因为它包含众多的参数而苦恼,这时可以考虑用Builder模式来创建对象。
如,我们要设计一个营养成份的类,包含能量,蛋白质,脂肪,钙,铁,锌,维生素A, 维生素B1 ... 等,但在构造的时候,不一定每次都需要这些参数,如钙,铁,锌和维生素等是可选的,为了适应多种可能的搭配,比较原始 ......