我们知道java 的bio是一个请求对应一个线程,那么java nio 可不可以这样理解,一个请求对应一个channel

发布于 2022-09-11 16:30:11 字数 541 浏览 15 评论 0

最近在学习java nio 方面的知识,这个点一直有点奇怪,nio编程里有这样一段通用代码

for(xxxxxxx){
   if(selectionKey.isAcceptable()){
       ServerSocketChannel ssc = (ServerSocketChannel) selectionKey.channel();
       SocketChannel socketChannel = ssc.accept();
       socketChannel.configureBlocking(false);
       socketChannel.register(selector,SelectionKey.OP_READ);
    }
    f(selectionKey.isReadable()){
       .......
    }
}

循环扫描通道的状态,在通道accept的时候将会将会生成一个新的通道socketChannel,然后指定监听的事件,这样一个tcp连接都将形成一个channel,问一下这样理解对吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

染墨丶若流云 2022-09-18 16:30:11

1、bio是一个请求来了,新开一个线程去处理
2、nio却不是一个请求对应一个channel,而是一个 tcp连接 对应一个channel.

青瓷清茶倾城歌 2022-09-18 16:30:11

你只从代码层面理解是不可行的,你要把代码和操作系统提供的网络模型结合起来去理解。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文