关于NIO的讨论
MINA使用系列I/O线程处理读和写,这是很多典型NIO框架的手法。但是Netty要比MINA聪明得多,当发送Queue中是空的,Netty将直接发送数据,不再例行公事放入Queue中,如果发送Queue不是空的,Netty将这个数据放入队列,这时类似MINA做法。所以,Netty要快些?
?
我对种说法的评价是: 说了等于没说,兄弟还需努力。
?
最后,再说一下Netty的一个缺点,
大家看到这,发现我都没有提到读数据的情况,Netty读数据也是用Poller线程在读,
不管Acceptor放入多少个Socket,全是Poller线程在一个个地读,
把读到的数据放到Buffer后会触发MessageEvent事件(Netty是一个纯正的事件驱动框架,这是Tomcat、Jetty这类业余选手望尘莫及的),
此时会调用ChannelUpstreamHandler这类处理器的messageReceived方法,
messageReceived方法中的代码通常是业务相关的,但是执行messageReceived方法的线程却是Poller线程,
所以只要在messageReceived这种地方出现问题,比如有个Thead.sleep调用或者出现无限循环,
那么此时Netty跟死了没分别,Poller线程无法往下走了,所有Task都没法处理了。
1 楼 ahgf 2011-02-21 "之后去了Jboss",Trustin Lee应该没有去Jboss吧,只不过是Apache mina的其中一个开发者去了jboss,并且继续开发Netty。