Java BufferedReader从不关闭。后果是什么?

Java BufferedReader从不关闭。后果是什么?,java,bufferedreader,try-catch-finally,Java,Bufferedreader,Try Catch Finally,我试图理解如果BufferedReader从未关闭会产生什么后果? 我刚刚意识到,许多静态代码都有一个BufferedReader,它们永远不会用try…catch…finally(br.close)关闭 大多数代码如下所示: public static boolean isProcessX24Success(String data) throws Exception { BufferedReader br = new BufferedReader(new StringReader

我试图理解如果BufferedReader从未关闭会产生什么后果? 我刚刚意识到,许多静态代码都有一个BufferedReader,它们永远不会用try…catch…finally(br.close)关闭

大多数代码如下所示:

public static boolean isProcessX24Success(String data) throws Exception
{   
    BufferedReader br = new BufferedReader(new StringReader(data));
    String line = "";
    String result = "";
    while ((line = br.readLine()) != null) 
    {
        if (line.contains("SUCCESS X24"))
            return true;   
    }   

    return false;
} 

正如你所看到的,在最后一个阶段没有br.close。这会带来问题吗?如果是,是什么?对该方法的调用(以及其他类似性质的调用)是按顺序完成的,而不是由多个线程执行。

没有问题,因为您在
StringReader
上使用它。当
BufferedReder
的作用域离开时,它将有资格进行垃圾收集。 如果未关闭例如
文件读取器
,则会出现问题,因为系统资源未正确关闭,并且在程序结束之前,文件上可能存在读取锁定

写入时可能会出现问题,因为由于缓冲,数据可能永远不会写入文件