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




threadpool java español (2)

Aquí hay un ejemplo de código, que demuestra el trabajo de keepAliveTime ¿Cómo funciona maximumPoolSize de ThreadPoolExecutor?

https://code.i-harness.com

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.


Aquí hay una descripción más de Javadoc:

<dt>Keep-alive times</dt>
 *
 * <dd>If the pool currently has more than corePoolSize threads,
 * excess threads will be terminated if they have been idle for more
 * than the keepAliveTime (see {@link
 * ThreadPoolExecutor#getKeepAliveTime}). This provides a means of
 * reducing resource consumption when the pool is not being actively
 * used. If the pool becomes more active later, new threads will be
 * constructed. This parameter can also be changed dynamically
 * using method {@link ThreadPoolExecutor#setKeepAliveTime}. Using
 * a value of <tt>Long.MAX_VALUE</tt> {@link TimeUnit#NANOSECONDS}
 * effectively disables idle threads from ever terminating prior
 * to shut down.
 * </dd>
 *

Esencialmente, esto solo le permite controlar la cantidad de subprocesos que quedan en el grupo inactivo. Si lo hace demasiado pequeño (para lo que está haciendo), creará demasiados hilos. Si lo hace demasiado grande, consumirá memoria / hilos que no necesita.





keep-alive