Netty学习笔记

最近看了一些源码(netty-4.1.0.Final),结合李林锋的文章学习了一下Netty.
先看几个基本概念,BIO | NIO | AIO

1. IO

BIO, 同步阻塞式IO

一个连接一个线程,数据的读写是阻塞的,可以通过线程池来避免频繁的创建和销毁线程。

NIO, 同步非阻塞式IO

所有的连接都会注册到一个多路复用器(selector)上,然后有个线程不停的轮询这个selector,有数据可读时才创建或使用线程池中的线程去处理该数据。

NIO基于Reactor,当socket有流可读或可写入socket时,操作系统会相应的通知引用程序进行处理,应用再将流读取到缓冲区或写入操作系统。这个时候,已经不是一个连接对应一个线程了,而是 一个有效的请求对应一个线程,当连接没有数据时,是没有工作线程来处理的。