今天測試來找我,說定時的策略任務不能運行了,或者有時候運行有時候不運行,很奇怪。之前都好好,百思不得其解。
后來發現多了一個定時任務類,且都是用的@Scheduled注解。
突然就恍然大悟,記得在哪里看到過,如果在多個函數上使用了@Scheduled,那么一定是一個執行完畢,才能排下一個。
然后發現某些時間點我的任務會被阻塞。
以下是兩個定時任務類都用了這個注解的圖。
解決方法如下,配置線程池,創建一個類配置,如下:
import java.util.concurrent.ScheduledThreadPoolExecutor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class ThredConfig { @Bean public ScheduledThreadPoolExecutor scheduledExecutorService() { ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(10); return executor; } }
這就是我踩的坑,學習的路上任重而道遠。如有錯漏,歡迎指正。