我是Java NIO的新手,也用过一点。我有一个一般性的疑问。如果您正在设计一个超低延迟应用程序与高吞吐量应用程序,那么使用非阻塞IO,这两个应用程序中的哪一个会明显受益?
我的理解是,非阻塞IO肯定有助于提高吞吐量,因为工作线程不会阻塞,因此不会等待响应,并且可以自由地触发新的请求,直到之前的请求得到服务。一旦我们得到以前触发的请求的响应,工作线程就可以异步处理它们,从而增加吞吐量。
但是,我无法看到非阻塞IO如何直接为低延迟应用程序带来好处。
我猜“异步行为是避免争用的一种很好的方法。”如果是这样的话,低争用意味着低延迟。因此,NIO可能有助于降低延迟。这有意义吗?
发布于 2014-02-12 03:45:13
“异步行为是避免争用的好方法。”--仅当使用单线程时。如果有很多线程,争用是不可避免的。您必须使用多线程(带或不带NIO)来获得高吞吐量和/或低延迟。
NIO只有助于保持较低的线程数量(大约是可用处理器的数量),从而节省内存(每个线程消耗大量内存),并允许大量的并发连接,但通常比阻塞IO的性能更差。
发布于 2014-03-05 07:09:21
这完全取决于..。:)
https://stackoverflow.com/questions/21224073
复制相似问题