netty , 对nio进行了更进一步的封装,或者是重写。 并没有使用什么新的技术,而是通过巧妙的构造、完整封装,向用户提供一个使用简单、高效稳定的io框架。
官方解释:
Netty 是一款异步的、事件驱动的网络应用程序框架,支持快速开发可维护的、高性能的、面向协议的服务器
和客户端。
Netty 封装的内容
网络编程(阻塞或非阻塞的)
多线程
高负载
ChannelFuture | ChannelFutureListener | 回调
以上三者实现了Netty的异步, 进行流处理时会立即返回一个ChannelFuture, 该future 可以添加一到多个 listener ,约定listener其operationComplete 方法为回调方法。 流处理完会回调该方法。
以下是示例。(来自Netty实战书中)
Channel channel = ...;//通道连接,立即返回futureChannelFuture future = channel.connect(new InetSocketAddress("192.168.0.1", 25));//添加listenerfuture.addListener(new ChannelFutureListener() {//重写回调方法@Overridepublic void operationComplete(ChannelFuture future) {if (future.isSuccess()){ByteBuf buffer = Unpooled.copiedBuffer("Hello", Charset.defaultCharset());//同样的异步的方式向连接者发送消息ChannelFuture wf = future.channel().writeAndFlush(buffer);} else {//处理异常Throwable cause = future.cause();cause.printStackTrace();}}});
事件 | ChannelHandler
Future、回调和 ChannelHandler
选择器、事件和 EventLoop
我想先把多线程和并发的内容整理完,在做IO的整理。
