En algunos casos, necesitamos asignar diferentes grupos de subprocesos para ejecutar múltiples tareas en el proyecto. Por lo tanto, se controlan diferentes tareas monitoreando diferentes grupos de subprocesos. Para lograr esto, se requiere un grupo de múltiples subprocesos en el proyecto.
Spring Boot proporciona soluciones de uso y configuración de uso de subprocesos simples y eficientes.
Configuración
Primero, configure los frijoles del grupo de subprocesos que se entregarán a la administración de primavera:
@ConfigurationPublic Class TaskExecUtePool {@Bean (name = "ThreadPoola") public threadpoolTaskExecutormyTaskasyncpool () {threadpooltaskexecutor ejecutor = new ThreadPoolTASKEXECUTOR (); ejecutor.setCorepoolSize (4); ejecutor.setMaxPoolSize (8); ejecutor.setqueueCapacity (100); ejecutor.setkeepaliveSeconds (60); Ejecutor.setThreadNamePrefix ("Pool-A"); Ejecutor.setRejedEdExecutionHandler (new ThreadPoolExecutor.CallerRunSpolicy ()); ejecutor.initialize (); devolver ejecutor; } @Bean (name = "ThreadPoolb") public ThreadPoolTASKEXECUTORASYNCPOOLB () {ThreadPoolTASKEXECUTOR Ejecutor = new ThreadPoolTASKEXECUTOR (); ejecutor.setCorepoolSize (2); ejecutor.setMaxPoolSize (4); ejecutor.setqueueCapacity (8); ejecutor.setkeepaliveSeconds (60); Ejecutor.setThreadNamePrefix ("Pool-B"); // La política utilizada cuando el número de tareas excede MaxpoolSize y QueueCapacity. Esta política es llamar al hilo de la tarea para ejecutar Ejecutor.setRectedEdExecutionHandler (new ThreadPoolExecutor.callerRpolicy ()); ejecutor.initialize (); devolver ejecutor; }} usar
El uso de hilos solo requiere anotación en el método de ejecución, y la clase del método debe definirse como un frijol y entregarse para que se administre.
Puede usar anotaciones @Component, @service, etc. en la clase
@Async (valor = "threadpoola") public void taska () {...} Verifique el número de subprocesos activos:
@AUTOWired private threadpooltaskexecutor threadpoola; // El nombre de la variable es el nombre del nombre definido de frijol de la piscina de hilo. public void checkAVTivethreadNum () {int num = threadpoola.getActiveCount ();}Por supuesto, hay otros métodos, por lo que no daré ningún ejemplo aquí.
Comprensión de cada atributo del grupo de subprocesos:
CorePoolSize: representa el hilo del núcleo del grupo de hilos y el número de hilos abridos en circunstancias normales.
Queuecapacidad: cuando los hilos principales están ejecutando tareas, todavía hay tareas adicionales que se guardarán aquí.
MaxpoolSize: si la queuecapacidad está llena, se iniciarán más hilos hasta que el número de hilos llegue a MaxpoolSize. Si todavía hay tareas, se procesará de acuerdo con la política de rechazo.
Hay muchas estrategias de rechazo:
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.