@schedule anotation ialah anotasi tugas berjadual yang biasa digunakan dalam springboot. Ia adalah mudah dan mudah untuk digunakan, namun, jika terdapat banyak tugasan berjadual, atau beberapa tugasan sangat memakan masa, ia akan menjejaskan pelaksanaan jadual lain. tugasan, kerana jadual adalah satu-utas secara lalai , apabila tugasan dilaksanakan, tugasan lain tidak boleh dilaksanakan
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)); } }
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah tugas berjadual tidak dilaksanakan mengikut jadual dalam springboot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!