title: Java thread per connection model vs NIO
body: <p>Is the non-blocking Java NIO still slower than your standard thread per connection asynchronous socket?</p>
  
  <p>In addition, if you were to use threads per connection, would you just create new threads or would you use a very large thread pool?</p>
  
  <p>I'm writing an MMORPG server in Java that should be able to scale 10000 clients easily given powerful enough hardware, although the maximum amount of clients is 24000 (which I believe is impossible to reach for the thread per connection model because of a 15000 thread limit in Java).
  From a three year old article, I've heard that blocking IO with a thread per connection model was still 25% faster than NIO (namely, this document <a href="http://www.mailinator.com/tymaPaulMultithreaded.pdf">http://www.mailinator.com/tymaPaulMultithreaded.pdf</a>), but can the same still be achieved on this day? Java has changed a lot since then, and I've heard that the results were questionable when comparing real life scenarios because the VM used was not Sun Java.
  Also, because it is an MMORPG server with many concurrent users interacting with each other, will the use of synchronization and thread safety practices decrease performance to the point where a single threaded NIO selector serving 10000 clients will be faster? (all the work doesn't necessary have to be processed on the thread with the selector, it can be processed on worker threads like how MINA/Netty works).</p>
  
  <p>Thanks!</p>