ejemplo:
@Async
public void test() {
log.info("test");
}
复制代码
No usar Spring Boot
Un punto de interrupción muestra que el valor predeterminado es org.springframework.core.task.SimpleAsyncTaskExecutor
Como su nombre lo indica, esto es muy simple, observe el código fuente y comience el método de ejecución: cada ejecución agregará un nuevo hilo, y en el caso de alta concurrencia, los hilos se crearán infinitamente, y las consecuencias se pueden imaginar.
protected void doExecute(Runnable task) {
Thread thread = this.threadFactory != null ? this.threadFactory.newThread(task) : this.createThread(task);
thread.start();
}
复制代码
Uso de Spring Boot
org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration configurará automáticamente org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor (solo en Spring Boot 2)
Sin embargo, la cola utilizada por este grupo de subprocesos es LinkedBlockingQueue, que es una cola ilimitada. Cuando la simultaneidad es alta, todas las tareas entran en la cola, lo que puede causar un desbordamiento de contenido.
usar correctamente
Personalice el grupo de subprocesos de acuerdo con la situación empresarial: www.cnblogs.com/duanxz/p/60…