Maison >Java >javaDidacticiel >Comment résoudre le problème des tâches planifiées qui ne sont pas exécutées dans les délais prévus dans Springboot
@schedule annotation est une annotation de tâches planifiées couramment utilisée dans Springboot. Elle est simple et pratique à utiliser. Cependant, s'il y a de nombreuses tâches planifiées, ou si certaines tâches prennent beaucoup de temps, cela affectera l'exécution d'autres. tâches planifiées, car la planification est monothread par défaut. Oui, lorsqu'une tâche est exécutée, les autres tâches ne peuvent pas être exécutées. La solution consiste à reconfigurer la planification et à la modifier en exécution multithread. 🎜🎜#
import org.springframework.boot.autoconfigure.batch.BatchProperties; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import java.lang.reflect.Method; import java.util.concurrent.Executors; @Configuration public class ScheduleConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { Method[] methods = BatchProperties.Job.class.getMethods(); int defaultPoolSize = 3; int corePoolSize = 0; if (methods != null && methods.length > 0) { for (Method method : methods) { Scheduled annotation = method.getAnnotation(Scheduled.class); if (annotation != null) { corePoolSize++; } } if (defaultPoolSize > corePoolSize) corePoolSize = defaultPoolSize; } taskRegistrar.setScheduler(Executors.newScheduledThreadPool(corePoolSize)); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!