chat cual es la mejor manera de hacerlo ? con NIO o IO y hilos o algún otra forma ?

chat cual es la mejor manera de hacerlo ? con NIO o IO y hilos o algún otra forma ? quiero hacer un chat que pueda manejar miles de clientes pero no se cual es la mejor manera si con las clases nio o io y utilizar hilos pero supuestamente si hago un hilo para cada cliente esto consume muchos recursos y utilizando la class nio chanel supuestamente es mas rápido y consume menos recursos pero vi en una pagina q en el 2010 ya io con hilos es mas rapido que nio debido a los cambios en los thread que se implementaron, alguien me podría sugerir la mejor manera de hacer un chat que sea rápido y que no consuma mucho recursos para poder ser capaz de manejar miles de clientes espero su ayuda gracias

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

hilos

Cuando salió java.nio en Java 1.4 era mejor opción que java.io porque no manejaba tantos hilos, lo cual era bastante costoso en aquel entonces. Pero con los cambios a los CPU's de hoy (hyperthreading, multi-core, etc etc) el año pasado se hicieron comparaciones nuevamente y ahora es más recomendable java.io nuevamente, con hilos; además, java.nio parece tener problemas en ciertos ambientes.

Yo tengo una aplicación que hice con java.nio y después de un ratito en producción se va al 100% uno de los CPU's; revisando el stack trace he visto que la causa es el ciclo del selector de java.nio. Estuve buscando al grado de meter un issue en java 6, luego probé con java 7, el bug sigue ahí, y encontré que el bug ya ha sido reportado y no ha sido arreglado (o no lo van a arreglar, algo así).

En Java 7 me parece que viene un java.nio2 o algo así pero creo que son extensiones de java.nio para usar el patrón de canales con archivos y mapeo a memoria y no sé qué otras cosas.