InputStreamReader.close()如何协同工作?

lyn*_*oid 6 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();
Run Code Online (Sandbox Code Playgroud)

来自DatagramChannelImpl.谁能翻译成英文?

mgu*_*mon 4

因此,每次我深入了解Sun Oracle 的 Java 代码时,我都会感到失望。nd作为变量名?没有比这更不透明的了。

nd引用的是NativeDispatcher,它处理特定于平台的操作,例如关闭文件描述符(亲切地命名为变量fd)。我只能假设NativeThread检查和信号是为了清理读/写线程,源代码没有提供太多信息。AbstractSelectableChannelisRegistered()中的方法确保 Channel 未被使用,该方法关闭所有内容,最后调用nd.close(fd);kill