就在最近,我了解了NIO。据我了解,NIO的主要优势在于,由于NIO的非阻塞功能,我们仅用一个(或几个)线程就可以处理许多连接。但是我们不能使用执行器并提供工作线程列表来实现此目标吗?

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

非阻塞功能也存在于执行程序的灵魂中,在这里我们称为执行程序的execute函数,我们基本上是将连接添加到缓冲区中并等待固定数量的线程释放。

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

谢谢

最佳答案

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

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

关于java - 为什么我应该使用NIO(或诸如netty之类的框架)而不是Java执行程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38360822/

10-10 13:53