Its not as clear cut or obvious as it first seems:
http://mailinator.blogspot.com/2008/02/kill-myth-please-nio-...
Edit: The original presentation is more interesting: http://www.mailinator.com/tymaPaulMultithreaded.pdf
Its not as clear cut or obvious as it first seems:
http://mailinator.blogspot.com/2008/02/kill-myth-please-nio-...
Edit: The original presentation is more interesting: http://www.mailinator.com/tymaPaulMultithreaded.pdf
It's not just speed (The speed obviously changes as you change number of connections - 100k threads isn't going to beat 100k NIO connections). It's also that it's more scalable, better code, more maintainable, less prone to bugs, and you don't have to worry as much about concurrency issues. I'd argue that the lines of code is likely to be less also. And memory usage is likely to be less.
Or do you know of specific NIO performance improvements between JDK6 in 2008 and JDK6u26, or in JDK7?
100k threads isn't going to beat 100k NIO connections
That may be true but I wouldn't assume it with certainty without evidence. Threading has been improving, too. Tyma's 2008 presentation mentioned a JVM limit at the time of 16000 threads, but that may have changed as well.
A single-threaded NIO implementation, using only one core, could very plausibly lose to a 100K-threaded implementation on a multicore machine. And once you split your NIO over a few threads to use cores effectively, you have most of the same concurrency worries as with connection-per-thread approaches.