springboot定时器Scheduled与java timer

本文介绍了如何在Java中使用Scheduled注解和Timer类实现定时任务,包括Cron表达式的使用,展示了不同定时任务的配置方法,并提供了Cron表达式在线生成器的示例。通过@EnableScheduling开启定时任务,@Scheduled配合Cron表达式实现按日、周、月执行的任务,同时演示了JavaTimer的四种调度方式。
摘要由CSDN通过智能技术生成

注解使用

@Configuration      //1.主要用于标记配置类,兼备Component的效果。
@EnableScheduling   // 2.开启定时任务
public class SaticScheduleTask {
    //3.添加定时任务
    //每天执行一次
    @Scheduled(cron = "0 0 0 1/1 * ?")
    //或直接指定时间间隔,例如:5秒
    //@Scheduled(fixedRate=5000)
    private void configureTasks() {
        System.err.println("执行静态定时任务时间: " + LocalDateTime.now());
    }
}

Cron表达式

每隔5秒执行一次:“*/5 * * * * ?”
每隔1分钟执行一次:“0 */1 * * * ?”
每天23点执行一次:“0 0 23 * * ?”
每天凌晨1点执行一次:“0 0 1 * * ?”
每月1号凌晨1点执行一次:“0 0 1 1 * ?”
每月最后一天23点执行一次:“0 0 23 L * ?”
每周星期天凌晨1点实行一次:“0 0 1 ? * L”
在26分、29分、33分执行一次:“0 26,29,33 * * * ?”
每天的0点、13点、18点、21点都执行一次:“0 0 0,13,18,21 * * ?”
表示在每月的1日的凌晨2点调度任务:“0 0 2 1 * ? *”
表示周一到周五每天上午10:15执行作业:“0 15 10 ? * MON-FRI”
表示2002-2006年的每个月的最后一个星期五上午10:15执行:“0 15 10 ? 6L 2002-2006”

cron表达式在线生成器

表达式在线生成器

Java Timer定时器

import java.time.LocalDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
 
public class TimeTest {
    public static void main(String[] args) {
        timer1();
        //timer2();
        //timer3();
        //timer4();
    }
 
    // 第一种方法:设定指定任务task在指定时间time执行 schedule(TimerTask task, Date time)
    public static void timer1() {
        Timer timer = new Timer();
        Calendar calendar = Calendar.getInstance();
        calendar.set(2020, 11, 05, 16, 05, 20);
        timer.schedule(new TimerTask() {
            public void run() {
                System.out.println("-------定时任务执行,时间:--------" + LocalDateTime.now());
            }
        }, calendar.getTime());
        calendar.set(2020, 11, 05, 16, 05, 30);
        timer.schedule(new TimerTask() {
            public void run() {
                System.out.println("-------定时任务执行,时间:--------" + LocalDateTime.now());
            }
        }, calendar.getTime());
        calendar.set(2020, 11, 05, 16, 05, 40);
        timer.schedule(new TimerTask() {
            public void run() {
                System.out.println("-------定时任务执行,时间:--------" + LocalDateTime.now());
            }
        }, calendar.getTime());
    }
 
    // 第二种方法:设定指定任务task在指定延迟delay后进行固定延迟peroid的执行
    // schedule(TimerTask task, long delay, long period)
    public static void timer2() {
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            public void run() {
                System.out.println("-------设定要指定任务--------");
            }
        }, 1000, 5000);
    }
 
    // 第三种方法:设定指定任务task在指定延迟delay后进行固定频率peroid的执行。
    // scheduleAtFixedRate(TimerTask task, long delay, long period)
    public static void timer3() {
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {
            public void run() {
                System.out.println("-------设定要指定任务--------");
            }
        }, 1000, 2000);
    }
 
    // 第四种方法:安排指定的任务task在指定的时间firstTime开始进行重复的固定速率period执行.
    // Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
    public static void timer4() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 12); // 控制时
        calendar.set(Calendar.MINUTE, 0);    // 控制分
        calendar.set(Calendar.SECOND, 0);    // 控制秒
 
        Date time = calendar.getTime();     // 得出执行任务的时间,此处为今天的12:00:00
 
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {
            public void run() {
                System.out.println("-------设定要指定任务--------");
            }
        }, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天固定执行
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值