SpringBoot如何实现异步任务、定时任务呢?

戚薇 SpringBoot 发布时间:2023-05-14 20:46:51 阅读数:12076 1
下文笔者讲述SpringBoot实现异步任务、定时任务的方法分享,如下所示

异步任务

异步任务常用于发送邮件或处理数据时
    避免阻塞线程
    影响用户体验
	此时我们需采用异步任务

异步任务的实现思路

spring中我们只需使用注解@Async
 1.该注解标注在方法上
	    spring则认为这是一个异步方法
 2.主启动类上使用@EnableAsync开启异步注解功能
例:异步任务的示例
@RestController
public class AsynController {

    @Autowired
    AsyncService asyncService;

    @GetMapping("/hello")
    public String hello(){
        asyncService.hello();
        return "success";
    }
}
 
@Service
public class AsyncService {

    public void hello(){
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("数据处理中...");
    }
}
 
//启动项目
//访问localhost:8080/hello
//页面在3秒之后才返回success
//严重影响用户体验
//需要使用异步任务

@Service
public class AsyncService {

    @Async
    public void hello(){
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("数据处理中...");
    }
}
 
@EnableAsync
@SpringBootApplication
public class DemoApplication {

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

}

定时任务

定时任务:
   企业级开发中最常见的功能之一
如:
  定时统计订单数
      数据库备份
  定时发送短信和邮件
  定时统计博客访客等

简单的定时任务
  可直接通过Spring中的@Scheduled注解来实现
   复杂的定时任务则可通过集成Quart来实现
开启定时任务的示例
项目启动类上
   添加@EnableScheduling注解
   即可开启定时任务
例:
@EnableScheduling
@EnableAsync
@SpringBootApplication
public class DemoApplication {

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

}
 
配置定时任务

@Component
public class MySchedule {

	//当前任务执行结束1秒后开启下一次任务
	@Scheduled(fixedDelay = 1000)
	public void fixedDelay(){
		System.out.println("fixedDelay:" + new Date());
	}

	//当前任务开始2秒后,开启下一次定时任务
	@Scheduled(fixedRate = 2000)
	public void fixedRate(){
		System.out.println("fixedRate:" + new Date());
	}

	//initialDelay表示首次执行的延迟时间
	@Scheduled(initialDelay = 1000, fixedRate = 2000)
	public void initialDelay(){
		System.out.println("initialDelay:" + new Date());
	}

	//cron表达式:表示该定时任务每分钟执行1次
	@Scheduled(cron = "0 * * * * ?")
	public void cron(){
		System.out.println("cron:" + new Date());
	}
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/SpringBoot/202305/6437.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者