避免使用终结方法~来自effective JAVA

 终结方法通常是不可预测的,也是危险的,一般情况下是不必要的。

 终结方法的缺点在于不能保证会被及时地执行。从一个对象变得不可到达开始,到他的终结方法被执行,所花费的时间是任意长的。

   JAVA语言规范不仅不保证终结方法会被及时执行,而且根本就不保证他们会被执行。



1.总之,除非是作为安全网,或者是为了终止非关键的本地资源,否则请不要使用终结方法。

2.在有些很少见的情况下,既然使用了终结方法,就要记住调用super.finalize。

3.如果用终结方法作为安全网,要记得记录终结方法的非法用法。

4.最后,如果把终结方法与公有的非final类关联起来 ,请考虑使用终结方法守卫者,以确保即使子类的终结方法未能调用super.finalize,该终结方法也会被执行。

你可能感兴趣的:(避免使用终结方法~来自effective JAVA)