在公司代码整改中,有个高度重视的bug,就是我在主线程中获取了一个文件流,然后将其传入异步线程中,但是主线程中并没有有关流关闭的调用,所以被扫描出有高风险,但是我在异步线程中有进行流关闭,懵逼的我还以为这样关不掉流,故写了以下测试代码。
public static void main(String[] args) throws FileNotFoundException, InterruptedException {
InputStream inputStream = new FileInputStream("D:\\Download\\Excel\\1619407967438.xlsx");
Thread thread = new Thread(() -> {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
},"t1");
thread.start();
thread.join();
try {
inputStream.read();
System.out.println("流未关闭");
} catch (IOException e) {
System.out.println("流已关闭");
}
}
结论:
可将其关闭