Java proporciona las discusiones del grupo de subprocesos pueden simplificar la administración, mejorar la utilización de los recursos de rosca.
Hola a todos, soy Li Fuchun, los temas son los siguientes:
Java que proporciona una agrupación de hebras? Cómo establecer el tamaño apropiado del grupo de subprocesos?
R: el paquete java.util.concurrent ofrece cinco grupo de subprocesos, desde simples a complejos incluyen los siguientes:
una, newSingleThreadExecutor (), agrupación de hebras individuales, cada vez que un trabajador es, el orden de la cola de la cola de tareas está garantizada sin límites ejecución;
dos, newFixedThreadPool (int), un número fijo de grupo de subprocesos en cualquier momento subprocesos de trabajo son N, cola sin límites para uso interno;
tres, newCachedThreadPool () en caché grupo de subprocesos, por un tiempo corto un gran número de tareas de procesamiento realizadas;
cuatro, newWorkStealingPool (int) robar el trabajo del grupo de subprocesos, java8 introducido uso interno ForkJoinPool lograr
cinco, newScheduledThreadPool (), adecuada para el manejo de tareas regulares o periódicos
cómo configurar correctamente el tamaño del grupo de subprocesos?
Necesidad de una tareas informáticas integrales a las características.
costo de CPU superior, el núcleo está generalmente establece en el número de hilos N (núcleos de CPU)
en espera de más tareas, el núcleo N se establece en el número de hilos es generalmente utilización de la CPU (1 + tiempo de espera medio / tiempo de ejecución promedio)
mientras se usa el grupo de subprocesos cuando, nota 5 puntos:
1, para evitar la acumulación de tarea
2, para evitar una expansión excesiva del hilo, y el hilo a la fuga de evitar;
3, a un punto muerto eVITAR, el uso racional de todos los tipos de cerraduras;
4, evitar el uso de ThreadLocal;
parámetros de grupo de subprocesos
estructura de grupo de subprocesos se muestra a continuación:
5 tipos de hilo de la piscina para evitar el uso de los tres primeros, debe establecer sí mismos precisas seis parámetros de la piscina hilo.
Por las siguientes razones:
1, newSingleThreadExecutor (), la cola de trabajo es cola sin límites, cola de trabajo fuera de los límites conducir fácilmente a un problema de desbordamiento de memoria.
public static ExecutorService newSingleThreadExecutor() {
return new FinalizableDelegatedExecutorService
(new ThreadPoolExecutor(1, 1,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>()));
}
2, newFixedThreadPool (int), la cola de trabajo se cola sin límites, es apto para causar problemas más allá de los límites de desbordamiento de la memoria;
public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}
3, newCacheThreadPool (), el número máximo de hilos es demasiado grande, fácilmente dar lugar a fugas de la rosca;
public static ExecutorService newCachedThreadPool() {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>());
}
resumen
Benpian responde agrupación de hebras de Java común, y un análisis del significado de los parámetros del grupo de subprocesos y el modelo de grupo de subprocesos;
a continuación, se describe brevemente cómo sintonizar la piscina excelente hilo parámetros de atención, así como el uso.
El original no es fácil, por favor indique la fuente.