¿Cómo implementa SpringBoot tareas asincrónicas y cronometradas?

Escrito en el frente: Las preguntas avanzadas de la entrevista de back-end de Java necesarias para la entrevista en 2020. Una guía de revisión se resume en Github. El contenido es detallado, con imágenes y textos. ¡Los amigos que necesitan aprender pueden protagonizar!
Dirección de GitHub: https://github.com/abel-max/Java-Study-Note/tree/master

(1) Tareas asincrónicas
La demanda de tareas asincrónicas se encuentra a menudo en escenarios de desarrollo reales.Hay muchas formas de lograr la asincronía en Java, como el multiproceso para lograr la asincronía. En SpringBoot, la realización de tareas asincrónicas solo necesita agregar dos anotaciones. Agregue la anotación @Async a la clase actual, agregue @EnableAsync para iniciar la clase

Escriba un servicio, AsynService, deje que este servicio se pause durante 3 segundos antes de generar datos

@Service
public class AsynService {
    @Async
    public void async(){
        try {
            Thread.sleep(3000);
            System.out.println("执行结束");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Escriba el controlador y llame a esta clase de servicio

@RestController
public class IndexController {
    @Autowired
    public AsynService asynService;
    @RequestMapping("/index")
    public String  asynctask(){
        asynService.async();
        return "async task";
    }
}

Después de ejecutarlo, visite http: // localhost: 8080 / index en el navegador y encontrará que debido a que la asincronía está activada, el navegador generará primero la tarea asíncrona y la consola mostrará el final de la ejecución después de tres segundos.

(2) Tareas cronometradas
He utilizado tareas cronometradas en el proyecto de código abierto spike anterior. En la escena en ese momento, sondeé la base de datos para consultar productos vencidos cada 1 minuto. Las tareas programadas tienen una amplia gama de aplicaciones, como empacar automáticamente los registros a las 12 en punto todos los días y hacer copias de seguridad a las 12 en punto todas las noches. Realizar tareas de tiempo en SpringBoot solo requiere dos anotaciones: @Scheduled y @EnableScheduling Como antes, @Scheduled se usa para tareas que deben ejecutarse regularmente y @EnableScheduling se usa para clases de inicio. Primero, escribamos la clase de tarea cronometrada:

@Service
public class ScheduleService {

    @Scheduled(cron = "0/10 * * * * ? ")
    public void sayHello(){
        System.out.println("hello");
    }
}

Es necesario agregar una expresión cron a la anotación @Scheduled para determinar el tiempo de ejecución de la tarea de cronometraje. Aquí significa que se ejecutará cada 10 segundos.

Luego agregue la anotación @EnableScheduling a la clase de inicio. Ejecute el proyecto, encontrará que se emitirá un saludo cada diez segundos.

Supongo que te gusta

Origin blog.csdn.net/qwe123147369/article/details/109180522
Recomendado
Clasificación