Tengo un programa java que escucha en un puerto para la entrada. Basado en Input, llama a un servicio web y luego devuelve un éxito / falla al programa cliente.
Bifurco un hilo para cada conexión de cliente. La respuesta al cliente que se conecta al programa debe ser rápida.
Estas son las opciones que estoy considerando
- usar hilos regulares
- utilizar
ExecutorService
connewFixedThreadPool
- utilizar
ExecutorService
connewCachedThreadPool
La razón por la que estoy considerando grupos es porque mis hilos son de corta duración: simplemente llaman a un servicio web, devuelven el resultado al cliente y cierran la conexión.
No creo newFixedThreadPool
que sea lo correcto porque las conexiones estarían esperando en las colas para obtener un hilo.
newCachedThreadPool
hubiera sido perfecto, excepto por una cosa: los hilos mueren después de un minuto. En mi caso, recibo ráfagas de conexiones, es decir, conexiones múltiples y luego puede haber una pausa durante unos minutos y luego nuevamente ráfagas. Creo que los hilos en CachedThreadPool morirían y tendrían que volver a crearse, por lo que en este caso, a veces puede funcionar como # 1.
Idealmente, me hubiera encantado tener newCachedThreadPool
un mínimo, es decir, una configuración que dice que el número de subprocesos nunca iría por debajo de 20, por lo que los subprocesos inactivos se eliminan pero nunca se permite que pasen por debajo de un umbral mínimo.
¿Hay algo como esto disponible? ¿O hay mejores alternativas?
fuente