gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:16:21 25 4
gpt4 key购买 nike

就在最近,我了解了 NIO。我的理解是,NIO 的主要优点是我们可以只用一个(或几个)线程处理许多连接,这要归功于 NIO 的非阻塞特性。但是我们不能使用 Executors 和工作线程列表来实现这个目标吗?

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

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

那么,为什么有人会使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com