Netty4的beta3加了AIO了,但是到beta9又被去了,作者的意思是测试下来AIO性能不如NIO,所以没必要用。我认为也没必要,在linux上NIO的实现本身就是epoll,使用jdk的AIO没有意义,在windows上jdk的AIO实现是IOCP,这种情况下使用AIO是比poll的性能高的,但是netty的服务器一般是在linux上,所以抛弃windows没啥大不了,windows最多做个客户端,用nio也就够了。
ServerBootstrap中有option和childOption的设置,区别在哪里?
option()是提供给NioServerSocketChannel用来接收进来的连接,也就是boss线程。childOption()是提供给由父管道ServerChannel接收到的连接,也就是worker线程,在这个例子中也是NioServerSocketChannel。
channel.writeAndFlush(message);内部发生了什么事?
是投递到自己的IO线程的MpscUnboundedArrayQueue无锁方式的线程安全队列去执行task