[英]How does InputStreamReader.close() work internally?
似乎实际的close()
实现隐藏在基类层次结构和抽象方法实现的某个地方。 例如,你能保证文件描述符被释放吗? 这是最接近我想知道的事情:
nd.preClose(fd);
long th;
if ((th = readerThread) != 0)
NativeThread.signal(th);
if ((th = writerThread) != 0)
NativeThread.signal(th);
if (!isRegistered())
kill();
来自DatagramChannelImpl
。 谁能翻译成英文?
因此,每次我深入研究
Sun
Oracle 的 Java 代码时,我都会感到失望。 nd作为变量名? 没有比这更不透明的了。
nd引用的是NativeDispatcher ,它处理平台特定的操作,例如关闭文件描述符(亲切地命名为变量fd )。 我只能假设NativeThread检查和信号是清理读/写线程,来源没有提供太多信息。 AbstractSelectableChannel的isRegistered()
确保 Channel 没有被使用, kill
方法是关闭一切并最终调用nd.close(fd);
来自 Javadoc:“关闭流并释放与之关联的任何系统资源”。 文件FD是系统资源。 因此它会关闭。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.