NIO异步通信

1.NIO定义
NIO是非阻塞IO,相对于传统的IO而言,解决了两个问题:
1)读写操作不再被同步阻塞;
2)一个服务端在某个时刻只能接收一个客户端的接入,通过启动新线程来提高接入会带来线程过载的问题。
2.NIO和普通IO的区别
传统的Socket通信方式如下:
1)接收连接;
2)读取请求消息,进行业务处理;
3)返回响应给客户端
以上三种操作全部为同步阻塞,在业务量大的情况下,一旦业务处理速度变慢,服务端返回给客户端的响应将明显下降,系统的吞吐量也严重下降。通常的做法是扩充服务端的线程,同时启动多个监听线程来并行处理客户端的接入,但是这样带来的一个副作用是线程数量将迅速增加,资源的损耗将进一步加剧。
NIO通信的原理如下:NIO采用了Reactor模式(类似于观察者模式,不同之处在于Reactor模式可以监听多个主题),通过一个多路复用器来监听多个客户端的网络句柄,一旦监听到客户端的请求消息,将对应的请求消息转发给对应的Handler(业务处理类),
读和写本身并不阻塞线程,如果没有请求消息,多路复用器会阻塞在select()操作之上。

猜你喜欢

转载自xx2004.iteye.com/blog/1190720