Usando ExecutorService basado en el grupo de subprocesos JUC
El propósito del subproceso múltiple es a menudo mejorar la eficiencia del programa y mejorar la usabilidad del sistema. Pero la frecuente creación y destrucción de hilos es en sí misma algo perjudicial. Entonces, JUC de Java proporciona el uso de grupos de subprocesos.
Grupo de subprocesos: cree varios subprocesos por adelantado y colóquelos en el grupo de subprocesos, consígalos directamente cuando los use y vuelva a colocarlos en el grupo de subprocesos después de usarlos. Puede evitar la creación y destrucción frecuentes de hilos y realizar la reutilización.
beneficio:
- Eficiencia de respuesta mejorada (reduce el tiempo de creación de subprocesos)
- Reducir el consumo de recursos (reutilizar subprocesos en el grupo de subprocesos, no crear más)
- Fácil de administrar.
corePoolSize: tamaño del grupo principal
maximumPoolSize: número máximo de subprocesos
keepAliveTime: cuánto tiempo se detendrá el subproceso después de que no tenga tareas
JDK5.0 proporciona API de grupo de subprocesos relacionados: Executors y ExecutorService
La interfaz de grupo de subprocesos real de ExecutorService hereda la
clase de implementación común ThreadPoolExecurtor de Executor .
- void ejecutor (Runable runable) El grupo de subprocesos inicia el subproceso. (Perteneciente al método de la clase Ejecutor)
- void shutdown () Cerrar el grupo de conexiones (método de interfaz ExecutorService)
Clase de herramienta Ejecutores , clase de fábrica del grupo de subprocesos, que se utiliza para crear y devolver diferentes tipos de grupos de subprocesos. Presta atención para distinguir al Ejecutor
Pasos de implementación
- Crear servicio de grupo de subprocesos
- Hilo de ejecución
lograr:
// 线程类
static class ThreadTest implements Runnable{
public void run() {
System.out.println(Thread.currentThread().getName()+":执行了");
}
}
// 执行类
public static void main(String[] args) {
// 创建线程服务,构造线程池为3
ExecutorService executorService = Executors.newFixedThreadPool(3);
// 启动线程
executorService.execute(new ThreadTest());
executorService.execute(new ThreadTest());
executorService.execute(new ThreadTest());
executorService.execute(new ThreadTest());
}
Resultado: el grupo de subprocesos se define como 3, luego 4 subprocesos utilizan 3 subprocesos en el grupo de subprocesos.