Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java InputStreamReader.close()在内部是如何工作的?_Java_File Io - Fatal编程技术网

Java InputStreamReader.close()在内部是如何工作的?

Java InputStreamReader.close()在内部是如何工作的?,java,file-io,Java,File Io,实际的close()实现似乎隐藏在基类和抽象方法实现的层次结构中。例如,是否保证释放文件描述符?下面是最接近我想知道的事情: nd.preClose(fd); long th; if ((th = readerThread) != 0) NativeThread.signal(th); if ((th = writerThread) != 0) NativeThread.signal(th); if (!isRegistered()) kill()

实际的
close()
实现似乎隐藏在基类和抽象方法实现的层次结构中。例如,是否保证释放文件描述符?下面是最接近我想知道的事情:

   nd.preClose(fd);
   long th;
   if ((th = readerThread) != 0)
   NativeThread.signal(th);
   if ((th = writerThread) != 0)
   NativeThread.signal(th);
   if (!isRegistered())
   kill();

从。有人能翻译成英语吗?

所以每次我都对Sun Oracle的Java代码感到失望。nd作为变量名?没有比这更不透明的了

nd所引用的是处理特定于平台的操作,例如关闭文件描述符(请命名为变量fd)。我只能假设检查和信号是清除读/写线程,源代码不提供太多信息。from的
isRegistered()
确保通道未被使用,而
kill
方法是关闭所有内容并最终调用nd.close(fd)的方法

来自Javadoc:“关闭流并释放与之相关的任何系统资源”。文件FD是一个系统资源。因此,它会关闭