我是nio套接字的新手,我已经使用nio套接字编写了服务器,现在我正在尝试编写shutdown钩子,以通过清理资源来确保正常退出。
我的问题是Selector.close()
方法是否关闭所有客户端套接字?如果没有,请让我知道如何在没有单独的客户端套接字列表的情况下访问所有客户端套接字。
Java文档说以下selector.close()
方法
关闭此选择器。
如果线程当前在此选择器的选择方法之一中被阻止,则将其中断,就像通过调用选择器的唤醒方法一样。
仍与该选择器关联的所有取消的密钥均无效,其通道被注销,并且与该选择器关联的任何其他资源都被释放。
如果此选择器已关闭,则调用此方法无效。
关闭选择器后,除非通过调用此方法或唤醒方法,否则任何进一步尝试使用它都会导致引发ClosedSelectorException。
上面的描述使用单词“ deregistered”,这使人感觉它不会关闭套接字,而只是从选择器中删除它们的映射。
不,它仅关闭选择器。
关闭选择器之前,可以通过Selector.keys()访问所有已注册的套接字键。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句