@RestController public class YourController { @Autowired private ScheduledExecutorService scheduledExecutorService; @Autowired private YourService yourService; @PostConstruct public void init() { scheduledExecutorService.scheduleAtFixedRate(new SaveResultTask(yourService), 0, 10, TimeUnit.MINUTES); } @GetMapping("/result") public List<Map<String, Object>> getResult() { return yourService.getResultFromNewTable(); } } 使用定时任务为什么不调用
时间: 2023-06-27 22:04:56 浏览: 124
@Controller、@RestController注解区别详解
5星 · 资源好评率100%
scheduledExecutorService.shutdown() 来停止定时任务?
因为在这个代码中,我们使用了 ScheduledExecutorService.scheduleAtFixedRate() 方法来启动定时任务,该方法会启动一个定时任务,并且会一直执行下去,除非我们手动调用 ScheduledExecutorService.shutdown() 方法来停止该定时任务。
在这个例子中,我们使用的是一个无限循环的定时任务,每隔 10 分钟执行一次 SaveResultTask(yourService) 任务。所以,如果我们调用 scheduledExecutorService.shutdown() 方法来停止定时任务,那么就会导致 SaveResultTask(yourService) 任务无法继续执行,也就是说,我们就无法再获取 getResult() 接口返回的数据了。
因此,在这种情况下,我们不应该调用 scheduledExecutorService.shutdown() 方法来停止定时任务,除非我们确认不再需要访问 getResult() 接口返回的数据。如果确实需要停止定时任务,可以考虑使用 ScheduledExecutorService.schedule() 方法来启动一个只执行一次的任务,该任务在执行完成后会自动停止定时任务。
阅读全文