Java基础学习总结(136)——有关流资源关闭(try-with-resources与AutoCloseable)的使用总结

前言

做Java开发的都知道,每个资源的打开都需要对应的关闭操作,不然就会使资源一直占用而造成资源浪费,从而降低系统性能。关于资源的关闭操作,从JDK7-JDK9有了不少的提升及简化。我们来看看资源处理的变化。

一、JDK6

在JDK6及之前,每个资源都需要我们手动写代码关闭,如:

FileInputStream fis = null;
byte[] buffer = new byte[1024];
try {
    fis = new FileInputStream(new File("E:\Java文件.txt")); 
    while (fis.read(buffer) > 0) {
        System.out.println(new String(buffer)); 
    }
} catch(Exception e) {
    e.printStackTrace();
}finally{ 
    if(fis != null) { 
    try {
        fis.close(); 
    } catch (IOException e) {
        e.printStackTrace(); 
    } 
}

资源打开使用完后,必须在finally块中进行手动关闭!尤其是数据库的连接对象Connection。我们有的同事,做一个查询功能点,打开了连接查询完后没有手动关闭,最后造成连接池超出最大连接数而使系统功能堵塞。

二、JDK7

JDK7发布后,添加了新特性:try-with-resources语句。所有需要关闭的资源只要实现了 java.lang.AutoCloseable(java.io.Closeable就实现了这个接口)接口就会在程序结束后自动关闭。AutoCloseable接口在JDK7中引入的,看源码,其中只有一个方法:

void

你可能感兴趣的:(Java基础学习总结)