java - 我们需要在 finally block 中将流程变量设置为 null 吗?

标签 java process

如果我们有如下代码:

Process p = null;
BufferedReader br = null;

try{
    p = Runtime.getRuntime().exec("ps -ef");
    br = new BufferedReader(new InputStreamReader(p.getInputStream()));
    //Do something with br
} catch (Exception e) {
    //Handle catch block
} finally {
    //Do we need to set p = null;
}

在 finally block 中是否需要 p = null 或默认关闭所有关联流?

最佳答案

不需要将进程设置为null,但最好在finally 中显式关闭BufferedReader堵塞。或者更好的是,如果使用 Java 7 或更高版本,请考虑使用 try with resources自动关闭流。

关于java - 我们需要在 finally block 中将流程变量设置为 null 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18990871/

相关文章:

java - Spring jackson - 将 json 映射到特定对象字段

c# - 如何捕获进程的标准输出/错误?

java.io.IOException : Server returned HTTP response code: 400 for URL:

java - AndroidBillingLibrary : Remote Service crashed on BillingController. 请求购买

Java 插入带有空格的字符二维数组

c# - 使用 Process.Start 运行程序时,找不到它的资源文件

c - 所需的sigsuspend的说明

linux - Bash:了解是否存在具有指定线程 ID 的线程的简便方法?

java - 进程循环运行而不是每次都记录

java - Android Studio 在 i7 处理器上使用 100% CPU 进行项目重建