为什么我应该使用NIO(或像netty这样的框架)而不是java执行器?

时间:2016-07-13 20:08:21

标签: java multithreading netty nio executors

就在最近,我了解了NIO。据我所知,NIO的主要优点是,由于NIO的非阻塞功能,我们只能处理一个(或几个)线程的连接。但是我们不能使用Executors实现这个目标并拥有一个工作线程列表吗?

我看不到NIO相对于Executors的任何优势。相反,我认为执行器比使用NIO更好,因为读取消息非常容易,我们只需要调用readLin(),但在NIO中我们应该检查消息是否是部分消息还是缓冲区有多条消息。

非阻塞的特性也存在于执行者的灵魂中,我们称之为执行者的执行函数,我们基本上将连接添加到缓冲区并等待固定数量的线程是空闲的。

那么,为什么有人会使用NIO而不是使用执行器呢?

谢谢

1 个答案:

答案 0 :(得分:0)

在遇到可伸缩性问题之前,多线程与NIO一样快(甚至更快)。线程太多会使性能低于NIO。

但在某些情况下,据说多线程阻止IO仍然比NIO更好:http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html