Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo implementar varias tareas programadas en SpringBoot

Cómo implementar varias tareas programadas en SpringBoot

El primero es relativamente simple

El segundo

@SpringBootApplication

/*

*? ¿Habilitar soporte para tareas programadas

*? Agregue @Scheduled al método correspondiente para declarar las tareas programadas que deben ejecutarse.

*/

@EnableScheduling

Aplicación de clase pública {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

@SpringBootApplication

/*

*? ¿Habilitar soporte para tareas programadas

*? Agregue @Scheduled al método correspondiente para declarar las tareas programadas que deben ejecutarse.

*/

@EnableScheduling

Aplicación de clase pública {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

/* Crea una instancia de pojo ordinario en el contenedor Spring.

Si desea cambiar dinámicamente su valor, debe heredar SchedulingConfigurer

*/

AutoSchedule de clase pública? SchedulingConfigurer{

SimpleDateFormat final estático privado dateFormat = new SimpleDateFormat("HH:mm:ss");

Cadena final estático privado DEFAULT_CRON = "0/5 * * * *?";

cadena privada cron = DEFAULT_CRON;

@Override

configTasks public void(ScheduledTaskRegistrar taskRegistrar) {

//? ?Runnable (clase de interfaz de hilo) y CronTrigger (activador de tarea programada)

taskRegistrar.addTriggerTask(() -> {

/ / Business lógica de las tareas programadas

System.out.println("Modificación dinámica de los parámetros cron de las tareas programadas, hora actual: " + dateFormat.format(new Date()));

}, (triggerContext) -> {

// La tarea programada se activa y el ciclo de ejecución de la tarea programada se puede modificar

CronTrigger trigger = new CronTrigger(cron);

Fecha nextExecDate = trigger.nextExecutionTime(triggerContext);

return nextExecDate;

});

}

public void setCron( String cron) {

System.out.println("El cron actual="+this.cron+"->se cambiará a: "+cron);

this.cron = cron;

}

}

El tercer tipo

@RestController

@Component

clase pública CrudSchelud? {

//Utilice la clase threadPoolTaskScheduler para implementar la función de programación de tiempo de las tareas,

//Reescriba el disparador CronTrigger, pero la tarea se llama continuamente3

@Autowired

private ThreadPoolTaskScheduler threadPoolTaskScheduler;

private Schedu

ledFuture futuro;

@Bean

public ThreadPoolTaskScheduler threadPoolTaskScheduler() {

devolver nuevo ThreadPoolTaskScheduler();

}

@RequestMapping("/startCron")

public String startCron() {

futuro = threadPoolTaskScheduler.schedule(new MyRunnable(), new CronTrigger("0 /5 * * * * *"));

System.out.println("DynamicTask.startCron()");

return "startCron";

}

@RequestMapping("/stopCron")

public String stopCron() {

if (futuro! = nulo) {

future.cancel(true);

}

System.out.println("DynamicTask.stopCron()");

return "stopCron ";

}

@RequestMapping("/changeCron10")

cadena pública startCron10() {

stopCron();/ / Primero deténgase, luego comience.

future = threadPoolTaskScheduler.schedule(new MyRunnable(), new CronTrigger("*/10 * * * *"));

System out. .println("DynamicTask.startCron10()");

return "changeCron10";

}

la clase privada MyRunnable implementa Runnable {

@Override

public void run() {

System.out.println("DynamicTask.MyRunnable.run()," + nueva fecha());

}

}

}