@schedule-Annotation ist eine häufig verwendete Annotation für geplante Aufgaben. Sie ist einfach und bequem zu verwenden. Wenn jedoch viele geplante Aufgaben vorhanden sind oder einige Aufgaben sehr zeitaufwändig sind, wirkt sich dies auf die Ausführung anderer aus Geplante Aufgaben, da der Zeitplan standardmäßig Single-Thread ist, können andere Aufgaben nicht ausgeführt werden. Die Lösung besteht darin, den Zeitplan neu zu konfigurieren und ihn auf Multi-Thread-Ausführung umzustellen. 🎜🎜#
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)); } }
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass geplante Aufgaben in Springboot nicht rechtzeitig ausgeführt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!