前言
做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。我们有的同事,做一个查询功能点,打开了连接查询完后没有手动关闭,最后造成连接池超出最大连接数而使系统功能堵塞。
二、JDK7JDK7发布后,添加了新特性:try-with-resources语句。所有需要关闭的资源只要实现了 java.lang.AutoCloseable(java.io