您好,登錄后才能下訂單哦!
小編給大家分享一下springboot中schedule如何解決定時任務不執行的問題,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
@schedule 注解 是springboot 常用的定時任務注解,使用起來簡單方便,但是如果定時任務非常多,或者有的任務很耗時,會影響到其他定時任務的執行,因為schedule 默認是單線程的,一個任務在執行時,其他任務是不能執行的.解決辦法是重新配置schedule,改為多線程執行.只需要增加下面的配置類就可以了.
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)); } }
看完了這篇文章,相信你對“springboot中schedule如何解決定時任務不執行的問題”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。