如果在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 - 博客园
推荐阅读
- CAD小白基础题
- 前端新手必备常用JavaScript方法函数大全
- netty系列之:性能为王!创建多路复用http2服务器
- Java设计模式之观察者模式
- 天玑9000|天玑9000之王!vivo X80系列卖爆:获3500-6000价位段销量冠军
- 基础力量应该如何训练?
- java开发之Java ORM 框架推荐
- 知道这些关于电脑的基础知识,可以让你的电脑变得更好用
- Java高级用法,写个代理侵入你 ?
- 普洱属于红茶系列吗,普洱属于黑茶吗篇文章教你区分普洱和黑茶