2

所以人们说 NIO 比 IO 更快,扩展性更好。对于处理 1000 个并发 GET/PUT 的服务器来说,它会是一样的吗?

每个模型的简单线程最大限度地利用多个核心。NIO在这方面站在哪里?

有没有办法将这两者结合起来?如果是这样,任何关于细节的链接会更好。

4

2 回答 2

1

几十年前,NIO 的扩展性比 IO 好得多,主要是因为您可以有效使用的线程数量相对较少。尤其是在 Linux 系统上。例如几百个线程。今天,临界点要高得多,例如大约 10,000。如果你需要 100,000 个连接,使用 NIO 是个好主意。但是,如果您只有几千个,您可能会发现磁盘或网络性能等其他问题更为关键。

我几乎总是使用 NIO,每个阻塞连接都有一个线程。事实上,Java 7 中 NIO2 之前的默认行为是阻塞套接字和文件。BTW NIO2 使用线程池来支持它的“异步”IO。;)

于 2012-06-09T15:41:23.553 回答
0

除了@Kumar 发布的链接之外,我发现这个很有帮助(几周前正在做这项研究):http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html

有关更详细的统计信息,请参阅相关幻灯片。他提出了 java.io 方法的论点。当然,与所有事情一样,这取决于用例。

于 2012-06-09T14:55:15.063 回答