java español - ¿Cómo funciona Keep-alive con ThreadPoolExecutor?




2 Answers

Supongamos que tiene un tamaño de núcleo de 5 y un tamaño máximo de 15. Por alguna razón, su grupo se ocupa y usa los 15 hilos disponibles. Finalmente, se queda sin trabajo, por lo que algunos de sus subprocesos quedan inactivos cuando finalizan su tarea final. Entonces 10 de esos hilos pueden morir.

Sin embargo, para evitar que se eliminen demasiado rápido, puede especificar el tiempo de mantener vivo. Por lo tanto, si especificas 1 como el valor keepAliveTime y TimeUnit.MINUTE como el valor unit , cada hilo esperaría un minuto después de haber terminado de ejecutar una tarea para ver si había más trabajo por hacer. Si aún no se le hubiera dado más trabajo, se dejaría completar, hasta que solo hubiera 5 subprocesos en el grupo, el "núcleo" del grupo.

executorservice

Como continuación a una question que ThreadPoolExecutor intento utilizar ThreadPoolExecutor en mi código base. Incluso después de repetidos intentos de comprensión del documento de la API de Java, no pude entender claramente la funcionalidad / propósito detrás del parámetro keepAliveTime para pasar en el constructor. Espero que alguien me explique con un buen ejemplo de trabajo.

Extractos del documento de Java:

public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue)

keepAliveTime : cuando el número de subprocesos es mayor que el núcleo, este es el tiempo máximo que el exceso de subprocesos inactivos esperará nuevas tareas antes de finalizar.







Related

java multithreading keep-alive