springboot--定时器

Posted xuemeng11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot--定时器相关的知识,希望对你有一定的参考价值。

1、启动类加上注解 @EnableScheduling

 

 2、导入jar包

<!-- druid 连接池配置-->
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>

 3、创建定时器业务类

package com.ccc.demoboot.task;

import com.alibaba.druid.support.logging.Log;
import com.alibaba.druid.support.logging.LogFactory;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

@Component
@Transactional
public class lx implements Runnable{


    private Log logger=LogFactory.getLog(lx.class);

    @Override
    public void run() {
        System.out.println("定时器任务1");
        logger.info("任务一执行成功");
    }
}

4、创建定时配置类

package com.ccc.demoboot.conf;

import com.ccc.demoboot.task.lx;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;

import java.util.concurrent.ThreadPoolExecutor;

@Configuration
public class TaskConf implements SchedulingConfigurer {



    @Value("${lx.cron}")
    private String lxScon;


    @Autowired
    private lx lxTask;

    @Override
    public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
        scheduledTaskRegistrar.setTaskScheduler(getTaskScheduler());

        scheduledTaskRegistrar.addCronTask(lxTask,lxScon);
    }

    @Bean
    public TaskScheduler getTaskScheduler(){
        //创建定时任务调度线程池
        ThreadPoolTaskScheduler taskScheduler=new ThreadPoolTaskScheduler();
        //设置线程名称前缀
        taskScheduler.setThreadNamePrefix("定时任务");
        //设置线程池大小,根据任务来确定
        taskScheduler.setPoolSize(10);
        //线程关闭最大等待时间
        taskScheduler.setAwaitTerminationSeconds(60);
        //线程关闭时等待所有任务完成
        taskScheduler.setWaitForTasksToCompleteOnShutdown(true);
        // 任务丢弃策略
        taskScheduler.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());

        return taskScheduler;
    }

}

5、在yml中进行配置

lx:
  #cron: 0 0 0 1/1 * ?   #每隔1天执行一次
  cron: 0 */1 * * * ?   #每隔1分钟执行一次
  #cron: 0 0 0/1 * * ?   #每隔1小时执行一次

  

 

以上是关于springboot--定时器的主要内容,如果未能解决你的问题,请参考以下文章

全栈编程系列SpringBoot整合Shiro(含KickoutSessionControlFilter并发在线人数控制以及不生效问题配置启动异常No SecurityManager...)(代码片段

springboot项目使用SchedulingConfigurer实现多个定时任务

springboot项目使用SchedulingConfigurer实现多个定时任务

如何在使用片段和计时器的选项卡式活动上更新 UI

测试片段不执行定时器或示例超时

jeesite 定时任务 或者springboot 执行定时任务