加入收藏 | 设为首页 | 会员中心 | 我要投稿 唐山站长网 (https://www.0315zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

从I/O多路复用到Netty

发布时间:2021-03-24 14:50:56 所属栏目:动态 来源:互联网
导读:那Netty是使用哪种实现的I/O多路复用呢?这个问题,得从Java NIO包说起。 Netty实际上也是一个封装好的框架,它的网络I/O本质上还是使用了Java的NIO包(New IO,不是网络I/O模型的NIO,Nonblocking IO)包。所以,从网络I/O模型到Netty,我们还需要了解下Java N

那Netty是使用哪种实现的I/O多路复用呢?这个问题,得从Java NIO包说起。

Netty实际上也是一个封装好的框架,它的网络I/O本质上还是使用了Java的NIO包(New IO,不是网络I/O模型的NIO,Nonblocking IO)包。所以,从网络I/O模型到Netty,我们还需要了解下Java NIO包。

本文预计阅读时间 5 分钟,将重点回答以下几个问题:

  • 如何用Java NIO包实现一个服务端
  • Java NIO包如何实现I/O多路复用模型
  • 有了Java NIO包,为什么还要封装一个Netty?

1.先来看一个Java NIO服务端的例子

上一篇文章我们已经了解了I/O多路复用的实现形式。

就是多个的进程的IO可以注册到一个复用器(selector)上,然后用一个进程调用select,select会监听所有注册进来的IO。

NIO包做了对应的实现。如下图所示。

有一个统一的selector负责监听所有的Channel。这些channel中只要有一个有IO动作,就可以通过Selector.select()方法检测到,并且使用selectedKeys得到这些有IO的channel,然后对它们调用相应的IO操作。

我们来个简单的demo做一下演示。如何使用NIO中三个核心组件(Buffer缓冲区、Channel通道、Selector选择器)来编写一个服务端程序。

(编辑:唐山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读