其他分享
首页 > 其他分享> > Netty - NIO基础

Netty - NIO基础

作者:互联网

 

一、NIO的三大组件

1.1 Channel

 

常见的Channel有:

1.2 Buffer

常见的Buffer:

只有ByteBuffer最常用,是一个抽象类。实现类有三个,如下图所示

 

 

1.3 Selector

服务器设计 - 多线程

形象解释:将服务器想象是个饭店,socket是一个客人,thread是一个服务员。每来一个客人,就要安排一个服务员跟着。

 

内存占用高:每维护一个线程,都要消耗内存

线程上下文切换成本高:CPU如果只有16核,那最多只能有16个线程在跑。其余线程就搞挂起,保存下该线程的运行情况。等CPU时间片轮到它,再load上下文回去。

 

服务器设计 - 线程池

形象解释:将服务器想象是个饭店,socket是一个客人,thread是一个服务员。在阻塞模式下,一个客人来了,哪怕这个客人啥都不干,一个服务员就要干等在那里,不能处理其他客人的请求。。。

 

老式服务器大多此设计,处理HTTP 请求

服务器设计 - selector

形象解释:将服务器想象是个饭店,channel是一个客人,thread是一个服务员。selector可以监视多个客人的动作。一旦哪个客人有动作(要和服务器交互),selector就会感知到,通知服务员thread来处理。

 

 

   

 

标签:Netty,NIO,thread,--,服务员,基础,线程,服务器,客人
来源: https://www.cnblogs.com/frankcui/p/16585841.html