SpringBoot定时任务

1.使用SpringBoot注解完成定时任务

新建任务类ScheduledTasks

@Component 把普通pojo实例化到spring容器中

@EnableScheduling 开启定时任务

具体设置定时任务时间请参考:  cron表达式或直接通过fixdRate‘fixedDelay、initialDelay。。。指定值

 

@Component
@EnableScheduling
public class ScheduledTasks {

    //每两秒调用一次
    @Scheduled(fixedRate = 2000)
    public void reportCurrentTime() {
        System.out.println("ScheduledTasks-----FixedRate现在时间:" + new Date());
    }
    @Scheduled(cron="*/2 * * * * *")
    public void reportCurrentTimeCron(){
        System.out.println("ScheduledTasks-----Cron现在时间:" + new Date());
    }
}

2.创建多线程定时任务

/*
    @Component: 注解用于对那些比较中立的类进行注释
    相对与在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释

    @Configuration:表明该类是一个配置类
    @EnableScheduling  开启定时任务
    @EnableAsync:开启异步事件的支持、开启多线程


 */
@Component
@EnableScheduling   // 1.开启定时任务
@EnableAsync        // 2.开启多线程
public class ManyThreadTasks {
    @Async
    @Scheduled(fixedDelay = 1000)  //间隔1秒
    public void first() throws InterruptedException {
        System.out.println("第一个定时任务开始 : " + LocalDateTime.now().toLocalTime() + "\r\n线程 : " + Thread.currentThread().getName());
        System.out.println();
        Thread.sleep(1000 * 10);
    }

    @Async
    @Scheduled(fixedDelay = 2000)
    public void second() {
        System.out.println("第二个定时任务开始 : " + LocalDateTime.now().toLocalTime() + "\r\n线程 : " + Thread.currentThread().getName());
        System.out.println();
    }
}

 

3.通过TimerTask实现【该方式使用的较少】

public class TimerTasks {

    public static void main(String[] args) {
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                System.out.println("task  run:"+ new Date());
            }
        };
        Timer timer = new Timer();
        //安排指定的任务在指定的时间开始进行重复的固定延迟执行。这里是每3秒执行一次
        timer.schedule(timerTask,10,3000);
    }
}

参考文章:https://www.cnblogs.com/mmzs/p/10161936.html

posted @ 2019-06-02 17:57  Cool_Yang  阅读(189)  评论(0编辑  收藏  举报