Creación y uso de grupo de subprocesos

Tabla de contenido

 Crear un grupo de subprocesos

Dos formas de usar el grupo de subprocesos para subprocesos múltiples (generalmente use el segundo) 


Nota: intente no crear el grupo de subprocesos en el proyecto (no lo cree en la lógica empresarial), de modo que cada vez que se llame a este método, se creará un grupo de subprocesos, que debe crearse cuando se inicia el proyecto.

 Crear un grupo de subprocesos

Cree una clase ThreadPoolConfig en la configuración (nombre de clase personalizado)

Agregue @Configuration: dígale a Spring que esta es una clase de configuración que debe cargarse al inicio

@Bean 
public static ExcutorService getExecutor(){ 
    //ExcutorService线程池
}

El significado aquí es: cree este método de esta clase al inicio, este método devolverá un objeto y entregará este objeto a Spring para su administración

Crear objeto

El primero es usar el método set para asignar valores, y el segundo es usar el constructor para asignar valores.

@Data: nota sobre la clase, proporcione los métodos get, set, equals, hashCode, canEqual, toString de la clase

@AllArgsConstructor: nota sobre la clase, que proporciona la construcción completa de parámetros de la clase

@NoArgsConstructor: nota sobre la clase, que proporciona la construcción sin argumentos de la clase

(estos dos son equivalentes)

 Crear un grupo de subprocesos

Parámetros en la clase ExecutorBuilder

 Estos valores mágicos se pueden colocar en el archivo de configuración, o puede escribir una constante aquí, el archivo de configuración se selecciona aquí (Nota: los archivos de configuración generalmente están en minúsculas)

 o

 Creación de grupo de subprocesos

Los significados de los parámetros aquí son: el número de subprocesos principales, el número máximo de subprocesos, el tiempo de supervivencia del subproceso (se reciclará después de un largo tiempo sin trabajo) y la estrategia de rechazo (hay una clase ThreadPoolExcutor que pone específicamente la estrategia de rechazo) (aquí está configurado para permitir que el subproceso principal se ejecute), cola (aquí el tamaño de la cola es 2000), prefijo del subproceso, permitir el tiempo de espera del subproceso principal 

Porque ya le dimos a Spring para administrar cuando lo creamos, así que cuando lo usamos, podemos ir a Spring para obtenerlo (igual que la interfaz)

 

Dos formas de usar el grupo de subprocesos para subprocesos múltiples (generalmente use el segundo) 

 El primer tipo: anotación asíncrona @Asyc

Asigne un nombre al objeto de grupo de subprocesos creado por Spring

El segundo tipo: clase CompletableFuture proporcionada por jdk1.8

(El significado aquí es: iniciar una tarea asincrónica, lanzar esta tarea en el grupo de subprocesos ExcutorService para ejecutar)

 Aquí hay dos casos

Una situación es entregar la tarea al grupo de subprocesos, sin prestar atención a la ejecución de la tarea. La tarea se entrega al grupo de subprocesos y el subproceso principal se libera (principalmente aplicable a algunas operaciones de actualización); en otro caso, después de que la tarea se entrega al grupo de subprocesos, el subproceso principal se bloquea y espera la consulta resultados. (Principalmente aplicable a: la necesidad de consultar la base de datos en un bucle for; la necesidad de llamar a la consulta de la interfaz http en un bucle; el propio método es muy complicado y necesita consultar la base de datos muchas veces)

lograr:

Aquí hay tres métodos

 Lanzar tareas al grupo de subprocesos para su uso

 Bloquee antes de que se complete la tarea (no lo agregue si no le importa el valor de retorno)

Supongo que te gusta

Origin blog.csdn.net/qq_52240237/article/details/132210275
Recomendado
Clasificación