Java基础系列-final、finally关键字( 二 )


如果在try块或catch块中存在return语句,那么,finally块中的内容必然会在return之前执行 。
finally经常用于发生异常的情况下关闭打开的资源,比如io流,网络资源等 。
四、finalized作用finalized是Object类的protected方法 。
当垃圾回收器发现一个对象不存在任何引用的时候,就会触发该方法的调用,调用由垃圾回收器发起 。
子类重写该方法一般用于处理系统资源或者一些清理工作 。
该方法并不被确保一定会调用,但是可以保证的是,一旦被调用,调用的线程并不会持有任何的同步锁,而且如果执行发生了异常,则忽略异常,同时停止执行 。也就是说,finalized方法并不会对程序的正常流程、代码的正常运行造成意外的影响 。
class FinalizedTest{@Overridepublic void finalize(){// do something}}简述finalized执行流程:
当对象变成(GC Roots)不可达时,GC会判断该对象是否覆盖了finalize方法,若未覆盖,则直接将其回收 。否则,若对象未执行过finalize方法,将其放入F-Queue队列,由一低优先级线程执行该队列中对象的finalize方法 。执行finalize方法完毕后,GC会再次判断该对象是否可达,若不可达,则进行回收,否则,对象“复活” 。(摘自参考文章)
【Java基础系列-final、finally关键字】参考:

  • java finalize方法总结、GC执行finalize的过程 - ScaleZ - 博客园




推荐阅读