在流教程中,关于从中获取的关闭流没有任何说法Files.newInputStream( path ).只有一些模糊不清:
返回的流是否可异步关闭和/或可中断是高度特定于文件系统提供程序的,因此未指定.
什么是"异步"在这种情况下?如果我显式关闭流或另一个线程异步关闭流?
您绝对必须关闭所获得的InputStream,就像所有其他人一样。术语“异步可关闭”是指当另一个线程在其 I/O 操作上被阻塞时关闭流的能力。
来自InterruptibleChannel文档:
实现此接口的通道是异步可关闭的:如果一个线程在可中断通道上的 I/O 操作中被阻塞,则另一个线程可以调用该通道的 close 方法。这将导致被阻塞的线程收到 AsynchronousCloseException。