springboot线程池+定时任务

SpringBoot默认已经帮我们封装好了相关定时任务的组件和配置,我们只需要在相应的地方加上@Schedule注解就可以实现定时任务。

一.启动定时任务

SpringBoot项目只需要在启动类上加上@EnableScheduling即可开启定时任务

@SpringBootApplication
@EnableScheduling
public class ScheduleTestApplication {

    public static void main(String[] args) {
        SpringApplication.run(ScheduleTestApplication.class, args);
    }

}

二.创建定时任务

SpringBoot的Scheduler支持四种定时任务格式

  • fixedRate:固定速率执行,例如每3秒执行一次
  • fixedDelay:固定延迟执行,例如距离上一次调用成功后3秒执行
  • initialDelay:初始延迟任务,例如任务开启过3秒后再执行,之后以固定频率或者间隔执行
  • cron:使用 Cron 表达式执行定时任务
    以上在企业开发中经常用到的是cron表达式,可以说掌握了cron表达式,基本就掌握了SpringBoot的定时任务了。

1.使用cron表达式

@Component
public class ScheduleTask {

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    //每隔5秒执行一次该方法
    @Scheduled(cron = "*/5 * * * * ?")
    public void testScheduleTask() {
        System.out.println("SpringBoot的定时任务" + Thread.currentThread().getName() + sdf.format(new Date()));
    }

}

2.@Schedule与线程池结合

其实@Schedule默认线程池大小为1,配合自定义线程池,可以实现线程池任务定时运行,符合AGV现有的自动化程序。

@Async("asyncThridClient")
   @Scheduled(fixedRate = 2000)
   public void getAgvStatusFromServer() throws ServiceException{
	try {
		log.info("三方厂家查询60/10/5T/25TAGV查询AGV状态线程启动");
		tcpClientToServer.getAgvStatusFromServer();
	} catch (Exception e) {
		e.printStackTrace();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值