• SpringBoot笔记十五:任务


    异步任务

    注解:@Async,@EnableAsync

    我新建一个Service,就叫AsyncService

    package com.example.service;
    import org.springframework.stereotype.Service;
    @Service
    public class AsyncService {
    
        public void hello(){
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("处理数据中...");
        }
    }
    
    

    我线程休眠了5秒,再看看我的Controller

    package com.example.controller;
    
    import com.example.service.AsyncService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class AsyncController {
    
        @Autowired
        AsyncService asyncService;
    
        @GetMapping("/hello")
        public String hello (){
            asyncService.hello();
            return "hello 许嵩";
        }
    }
    
    

    运行一下,访问http://localhost:8080/hello,要等待5秒才会有结果啊,我不想等怎么办?使用异步任务。在Service方法上加一个@Async注解,在Mainapplication主方法上加上@EnableAsync开启异步注解

    @EnableAsync
    public class MainApplication {...
        
    @Async
    public void hello(){...   
    

    然后重启项目,你会发现,可以瞬间访问了。

    定时任务

    注解:@Scheduled,@EnableScheduling

    新建一个Service,叫ScheduleService,我直接在MainApplication加上@EnableScheduling注解了

    package com.example.service;
    
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Service;
    
    @Service
    public class ScheduledService {
        @Scheduled(cron = "* * * * * MON-SAT")
        public void hello(){
            System.out.println("许嵩");
        }
    }
    
    

    运行,发现控制台每一秒都会打印出许嵩,这里讲解一下,更多的自己去查

    cron=秒 分 时 日 月 周几
    *是所有,枚举用逗号,时区用-,间隔是/
    @Scheduled(cron = "* * * * * MON-SAT")//周一到周六,每秒执行一次
    @Scheduled(cron = "0 * * * * MON-SAT")//0秒执行
    @Scheduled(cron = "0,1,2,3 * * * * MON-SAT")//0至3秒的时候执行
    @Scheduled(cron = "0-3 * * * * MON-SAT")//0至3秒执行
    @Scheduled(cron = "0/3 * * * * MON-SAT")//每隔3秒执行
    
  • 相关阅读:
    springboot之mybatis别名的设置
    webstorm
    万字长文把 VSCode 打造成 C++ 开发利器
    残差residual VS 误差 error
    参数与非参数的机器学习算法
    阿里云产品梳理
    aws产品整理
    Azure产品整理
    OpenStack产品摘要
    头条、美团、滴滴、阿里、腾讯、百度、华为、京东职级体系及对应薪酬
  • 原文地址:https://www.cnblogs.com/yunquan/p/10443090.html
Copyright © 2020-2023  润新知