- Netty 是一个提供了易于使用的API的客户端/服务器框架
- 高并发-NIO(非阻塞IO)
- 传输快-零拷贝
BIO: 去上厕所,坑全满,此时我一直光等着,主动观察哪个坑位好了,只要有坑位释放了,我就立马去占坑
NIO: 厕所坑全满,此时我跑出去抽烟或者做别的事,然后时不时再主动的去厕所有没有坑释放,如果有坑了自己去占坑
异步阻塞: 我在厕所里,等有人好了之后来通知后,然后再去占坑
AIO: 我在厕所外抽眼玩手机,等有人好了之后来通知我去 占坑
Hello Netty
- 构建一对主从线程组
- 定义服务器启动类
- 为服务器设置Channel
- 设置处理从线程池的助手类初始化器 ```java // 定义一个线程组 // 主线程组, 用于接受客户端的链接,但是不做任何处理,跟老板一样,不做事 EventLoopGroup bossGroup = new NioEventLoopGroup();
// 从线程组, 主线程会把任务交个从线程处理 EventLoopGroup workerGroup = new NioEventLoopGroup();
// netty 服务器的创建, ServerBootstrap 是一个启动类 ServerBootstrap serverBootstrap = new ServerBootstrap();
serverBootstrap.group(bossGroup, workerGroup) // 设置主从线程组 .channel(NioServerSocketChannel.class) // 设置nio的双向通道 .childHandler(null); // 子处理, 用于处理workerGroup
try { // 启动server, 并且设置8088 为启动端口, 同时启动方式为同步 ChannelFuture channelFuture = serverBootstrap.bind(8088).sync();
// 监听关闭的channel,设置位同步方式channelFuture.channel().closeFuture().sync();
} catch (InterruptedException e) { e.printStackTrace(); } finally { bossGroup.shutdownGracefully(); workerGroup.shutdownGracefully(); } ```
