我们在使用spring定时任务的时候,往往有这样的疑问,如果第一次定时任务没有执行完,到时间了,第二次定时任务会执行吗?下面我们来测试一下
@Scheduled(cron="0/10 * * * * ?") public void perform() throws InterruptedException{ System.out.println("当前时间"+System.currentTimeMillis()); Thread.sleep(25000); }
输出结果为:
当前时间1465718210001当前时间1465718240001当前时间1465718270000当前时间1465718300002当前时间1465718330000
一次定时任务执行耗时25s,定时任务的执行间隔为30s。
所以定时任务第一次执行后,10s后发现第一次任务未执行完,第二次不执行,20s发现定时任务仍未执行完,第二次任务不执行,30s后第二次任务执行完,第二次定时任务开始执行。