看起来实际的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.谁能翻译成英文?
因此,每次我深入了解Sun Oracle 的 Java 代码时,我都会感到失望。nd作为变量名?没有比这更不透明的了。
nd引用的是NativeDispatcher,它处理特定于平台的操作,例如关闭文件描述符(亲切地命名为变量fd)。我只能假设NativeThread检查和信号是为了清理读/写线程,源代码没有提供太多信息。AbstractSelectableChannelisRegistered()中的方法确保 Channel 未被使用,该方法关闭所有内容,最后调用nd.close(fd);kill
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |