基于maven+springboot项目开发定时任务,话不多说上代码:
@Component @EnableAsync @EnableScheduling @Service public class Schedule { // @Autowired // private IbsTaskInfoDao ibsTaskInfoDao; @Async @Scheduled(fixedRate = 2000L) public void task(){ // String time = ibsTaskInfoDao.selectTime("20220601001"); // String string = DateUtilsDemo.nextDaY(time,1); String localDate =LocalDateTime.now().toString(); if (localDate.equals("2099-01-02")){ // Batch batch = new Batch(); // batch.setStartTime(time); // batch.setEndTime(string); // System.out.println("当前线程:"+ Thread.currentThread().getName()+ // "统计结束日期"+time+"结束日期第二天:"+string +"系统时间:"+ LocalDateTime.now()); System.out.println("当前线程:"+ Thread.currentThread().getName()+"系统时间:"+ LocalDateTime.now()); Thread.interrupted(); }else{ try { // System.out.println("线程睡眠开始:"); Thread.sleep(60000); // System.out.println("线程睡眠结束:"); } catch (InterruptedException e) { e.printStackTrace(); System.out.println("线程睡眠异常,异常信息:"+e); } } } @Bean("taskExecutor") public Executor taskExecutor(){ ThreadPoolTaskExecutor taskExecutor =new ThreadPoolTaskExecutor(); //定义核心池大小是维持生存的最小线程数(并且不允许超时等) taskExecutor.setCorePoolSize(3); taskExecutor.setMaxPoolSize(50);//连接池中保留的最大连接数 taskExecutor.setQueueCapacity(200);//queueCapacity 线程池所使用的缓冲队列 //空闲线程存活时间,当allowCoreThreadTimeOut == false 时,会维护核心线程数量内的线程存活,超出部分会被超时。 //allowCoreThreadTimeOut == true 核心数量内的线程 空闲时 也会被回收。 taskExecutor.setKeepAliveSeconds(60); taskExecutor.setThreadNamePrefix("批处理调度");//线程池名称前缀 taskExecutor.setAwaitTerminationSeconds(60);// 设置线程池中任务的等待时间,如果超过这个时候还没有销毁就强制销毁,以确保能够被关闭,而不是阻塞住 return taskExecutor; }
代码中需要导入对应springjar包,具体如下图: