Netty
本文需要JDK NIO相关知识前提
类图:
主要的接口:
netty: EventLoopGroup, Eventloo, Channel
JDK: Executor, ExecutorService
线程模型
Netty的线程模型是典型的Reactor模式,关于Reactor模式的相关内容可以参考大神 Doug Lea的文章:《Scalable IO in Java》
Netty里面的线程模型,是主从Reactor模型,线程为: EvevtLoopGroup
主线程:主要负责网络IO的监听、连接请求,分发handler
从线程:主要负责用户内容处理
时序图
服务端启动的每一步调用的方法在图里都比较清晰,下面具体说下 一个典型的服务端启动程序:
publicstaticvoidmain(String[]args){
EventLoopGroupbossGroup=newNioEventLoopGroup();
EventLoopGroupworkGroup=newNioEventLoopGroup();
ServerBootstrapserverBootstrap=newServerBootstrap();
try{
serverBootstrap.group(bossGroup,workGroup).
channel(NioServerSocketChannel.class)
.childHandler(
newChannelInitializer(){
@Override
protectedvoidinitChannel(
SocketChannelch)throwsException{
ChannelPipelinepipeline=
ch.pipeline();
pipeline.addLast(
newTcpServerHandler());
}
});
ChannelFuturechannelFuture=
serverBootstrap.bind(8866).sync();
channelFuture.channel().closeFuture().