Como se mencionó anteriormente, 10.000 clientes no es fácil. Para Java, NIO (posiblemente aumentado con un threadpool separado para manejar cada solicitud sin bloquear el hilo de NIO) es la forma habitual de manejar una gran cantidad de clientes.
Como se mencionó, dependiendo de la implementación, los subprocesos realmente pueden escalar, pero depende mucho de la interacción que exista entre las conexiones del cliente. Es más probable que los hilos masivos funcionen si hay poca sincronización entre los hilos.
Dicho esto, NIO es notoriamente difícil de obtener al 100% la primera vez que lo implementa.
Recomendaría probar o, al menos, mirar la fuente para la lib Naga NIO al naga.googlecode.com. La base de código para lib es pequeña en comparación con la mayoría de los otros marcos de NIO. Debería poder implementar rápidamente una prueba para ver si puede poner 10.000 clientes en funcionamiento.
(La fuente Naga también pasa a ser libre de modificar o copiar sin atribuir al autor original)
Esto ya está respondido: http://stackoverflow.com/questions/592303/asynchronous-io-in-java – mparaz
Hay algunas recomendaciones excelentes de no bloqueo de NIO a continuación, pero para resumir, permítanme decirlo claramente : Cuando espere unos pocos clientes, puede ir por el camino de una sola fila. Pero cuando esperas clientes de 10K, y yo argumentaría (dependiendo de las cargas de E/S y CPU) que si esperas algo más de 100 clientes, NECESITAS IR LA FORMA NIO (IO no bloqueante). Incluso si su sistema operativo supera 1000 veces por segundo, ¿podría imaginarse la tarea de manejar clientes 10K? ¡No tiene sentido ir con sockets de bloqueo con tantos clientes! – Jeach