SpringBoot几种实时任务的实现方式

本文介绍了三种在Java中实现定时任务的方法:使用Timer类、ScheduledExecutorService接口和Spring框架的@Scheduled注解。通过示例代码展示了每种方法的具体应用,并解释了它们之间的主要区别。

使用Timer

public class TestTimer {
    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);
    }
}

使用ScheduledExecutorService

public class TestScheduledExecutorService {
    public static void main(String[] args) {
        ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
        // 参数:1、任务体 2、首次执行的延时时间
        //      3、任务执行间隔 4、间隔时间单位
        service.scheduleAtFixedRate(()->System.out.println("task ScheduledExecutorService "+new Date()), 0, 3, TimeUnit.SECONDS);
    }
}

使用Spring Task

需要在配置类或启动类上标注注解@EnableScheduling,并在定时执行的无参方法上标注注解@Scheduled,程序启动会根据@Scheduled所提供的信息定时 执行。

@Configuration
@EnableScheduling
public class SchedulingConfig {
    private final Logger logger = LoggerFactory.getLogger(getClass());

    @Resource 
    private RobotRestServiceImpl robotRestService;

    @Scheduled(cron = "0 0/10 * * * ?") // 每10分钟执行一次
    public void getToken() {
        logger.info("getToken定时任务启动");
    }
}

执行时间的配置:

(1)fixedRate:定义一个按一定频率执行的定时任务。

(2)fixedDelay:定义一个一定频率执行的定时任务,该属性可以配置initialDelay定义任务延迟执行时间。

(3)cron:通过表达式来配置任务执行时间

cron表达式:

一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。

(1)秒(0~59)

(2)分钟(0~59)

(3)小时(0~23)

(4)天(0~31)

(5)月(0~11)

(6)星期(1~7,1=sun)

(7)年份(1970~2099)

其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(表示每隔4小时),一个列表(1,3,5),通配符。由于月份中的日期和星期中的日期互斥,必段要对其中一个设置。

 

最后欢迎大家访问我的个人网站:1024s​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值