1. 什么是"try-with-resources" 模式?
“try-with-resources” 是在 Java 7 中引入的一种异常处理机制,它用于自动关闭实现了 AutoCloseable 或 Closeable 接口的资源。这种方式是资源管理器设计模式在Java中的一个明确体现。简化了资源的管理,使得资源的释放更加安全和可预测。
在使用 “try-with-resources” 模式时,需要在 try 关键字后面的小括号中声明一个或多个资源。这些资源必须是实现了 AutoCloseable 或 Closeable 接口的对象。在 try 块结束时,这些资源会自动关闭,无需手动调用 close() 方法。
//基本语法
try (ResourceType1 resource1 = ...;
ResourceType2 resource2 = ...;
// 可以声明多个资源,用分号隔开
) {
// 使用资源的代码
} catch (Exception e) {
// 异常处理代码
}
2.哪些常见资源实现了 AutoCloseable 接口?
AutoCloseable 接口是一个在 Java 7 中引入的接口,用于表示资源,它定义了一个 close() 方法,用于关闭资源。
以下是一些常见的资源实现了 AutoCloseable 接口的示例:
IO 类型的资源:
InputStream 和其子类(例如 FileInputStream、ByteArrayInputStream 等)
OutputStream 和其子类(例如 FileOutputStream、ByteArrayOutputStream 等)
Reader 和其子类(例如 FileReader、BufferedReader 等)
Writer 和其子类(例如 FileWriter、BufferedWriter 等)
Socket 和其相关类(例如 SocketInputStream、SocketOutputStream 等)
文件和目录相关的资源:
File 类:
DirectoryStream 类
数据库和网络连接相关的资源:
Connection 和其相关类(例如 PreparedStatement、Statement 等)
ResultSet 类
其他常见的资源:
RandomAccessFile 类
ZipFile 和 ZipOutputStream 类
需要注意的是,尽管资源实现了 AutoCloseable 接口,但并不意味着它们一定是线程安全的。在多线程环境中使用这些资源时,仍然需要适当地进行同步处理