就在最近,我了解了蔚来汽车。我的理解是,由于蔚来汽车的非阻塞功能,我们只需要一个(或几个)线程就可以处理许多连接。但是我们不能使用执行器并拥有工作线程列表来实现这一目标吗?
我看不出蔚来汽车比执行者有任何优势。相反,我认为执行器比使用 NIO 更好,因为读取消息非常容易,例如我们只需要调用 readLin(),但在 NIO 中我们应该检查消息是部分的还是缓冲区包含多条消息。
非阻塞的特性也存在于执行器的灵魂中,我们调用执行器的执行函数,我们基本上是将连接添加到缓冲区并等待固定数量的线程空闲。
那么,为什么有人会使用NIO而不是使用执行器呢?
谢谢
多线程与NIO一样快(甚至更快),直到遇到可扩展性问题。线程过多会使性能低于 NIO。
但在某些情况下,有人说多线程阻塞IO仍然比NIO:http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers更好.html