AutoCloseable接口
从AutoCloseable的注释是为了更好的管理资源,准确说是资源的释放,当一个资源类实现该接口close方法,在使用try-catch-resources语法创建的资源抛出异常后,JVM会自动调用close 方法进行资源释放,当没有抛出异常正常退出try-block时候也会调用close方法。像数据库链接类Connection,io类InputStream或OutputStream都直接或者间接实现了该接口。
使用AutoCloseable进行资源管理
使用jdk1.7新增的try-catch-resources语法在try的()内部创建资源,创建的资源在退出try-block时候会自动调用该资源的close方法。
总结
- 使用try-catch-resources结构无论是否抛出异常在try-block执行完毕后都会调用资源的close方法。
- 使用try-catch-resources结构创建多个资源,try-block执行完毕后调用的close方法的顺序与创建资源顺序相反
- 使用try-catch-resources结构,try-block块抛出异常后先执行所有资源(try的()中声明的)的close方法然后在执行catch里面的代码然后才是finally.
- 只用在try的()中声明的资源的close方法才会被调用,并且当对象销毁的时候close也不会被调用
- 使用try-catch-resources结构,无须显示调用资源释放。
参考:
https://www.jianshu.com/p/3a1e774d8625
https://www.jianshu.com/p/3a1e774d8625
立志如山 静心求实
浙公网安备 33010602011771号