netty学习笔记(1):NIO和Netty

2019-12-07  本文已影响0人  jiaminzhang

什么是NIO

NIO(Non Block IO)一般对应的是BIO,非阻塞IO相对阻塞IO的区别在于获取IO状态的过程是非阻塞的,好处是可以用更少的线程管理更多的链接。比如目前有10000个链接,而同时活跃的只有200个,如果用BIO的话必须得10000个线程才能管理,而NIO只需200个线程即可。而在java中,线程是相对宝贵的资源,每个线程栈大小默认为1MB,而且多线程之间的切换也会影响性能,因此NIO会明显提高后台能够处理的链接数。

原生NIO编程

原生的NIO编程主要有几个概念:

NIO编程中一般有两种channel。ServerSocketChannel代表服务端的channel,它可以绑定端口,监听链接连接的请求。SocketChannel代表客户端向服务端发起的链接,可以认为是一个实际的TCP链接,它可以监听数据的读取,写入等事件。下面是一个服务端编程的例子。

Netty

Netty出现的目的是为了提高nio编程的效率和性能,提供了更好的方法和工具来方便网络编程的开发。具体的netty介绍就不复述了,可以去看netty官网。后面的学习主要基于netty的4.1.33.Final版本进行。

<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.33.Final</version>
</dependency>

上一篇下一篇

猜你喜欢

热点阅读