SpringBoot开启异步任务和定时任务

SpringBoot开启异步任务和定时任务

Scroll Down

1、异步任务

Service

@Service
public class AsyncService {

    //告诉Spring这是个异步的方法
    @Async
    public void hello(){
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(“数据处理中”);
    }
}

Controller

@RestController
public class AnsyncController {
    @Autowired
    AsyncService asyncService;

    @GetMapping(“/hello”)
    public String hello(){
        asyncService.hello();
        return “success”;
    }

Application

@SpringBootApplication
@EnableAsync
public class SpringbootModelApplication {

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

}

解释:
@Async告诉Spring这是个异步的方法

2、定时任务

Service

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

@Service
public class ScheduleService {
    /
      second(秒),minute(分),hour(时),day of month(月),month,day of week(周几)
      0     MON-FRI  周一到周五每一分钟启动一次
           MON-FRI  周一到周五每一分钟每一秒启动一次
      /
    @Scheduled(cron = “0     MON-FRI”)
    public void hello(){
        System.out.println(“hell”);
    }
}

Application 中需要加入 @EnableScheduling 开启基于注解的定时任务

second(秒),minute(分),hour(时),day of month(月),month,day of week(周几)
0 MON-FRI 周一到周五每一分钟启动一次
MON-FRI 周一到周五每一分钟每一秒启动一次
0-4 MON-FRI 0-4秒每秒执行一次
0/4 MON-FRI 每四秒只需一次
0 0/5 14,18 ? 每天14点整,和18点整每隔五分钟执行一次
0 15 10 ? 1-6 每个月的周一至周六10:15分执行一次
0 0 2 ? 6L 每个月的最后一个周六凌晨2点执行
0 0 2 LW ? 每个月的最后一个工作日凌晨两点执行一次
0 0 2-4 ? 1#1 每个月的第一个周一凌晨2点到4点期间,每个整点都执行一次