程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(3)

sprigboot异步处理任务

发布于2021-06-12 15:24     阅读(771)     评论(0)     点赞(1)     收藏(5)


在开发工作中,开发者会经常遇到要使用异步处理的任务,例如发邮件,这个过程会耗费不少时间,如果正常执行,那么后台发送邮件时,前台就会造成响应不动,直到邮件发送完毕。所以一般都是使用多线程去处理这些问题,但是每次需要开启多线程太麻烦了,所以springboot就有了异步任务。在springBoot使用异步任务非常简单,只需要两步便能轻松使用。

前期准备工作:

1、准备一个service(AsynService),编写方法,模拟正在处理数据,例如使用线程休眠制造出同步时的等待效果。
@Service
public class AsynService {
   	
    public void asyn() {
        System.out.println("任务正在处理中……");
        try {
            Thread.sleep(5000);//线程休眠5s
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("任务处理完成");
    }
}
2、准备一个controller(AsynController),编写方法,调用service中模拟正在处理数据的方法。
@Controller
public class AsynController {

    @Resource
    private AsynService asynService;

    @GetMapping("/asyn")
    @ResponseBody
    public String asyn(){
        asynService.asyn();
        return "OK";
    }
}
3、测试。此时,业务方法以及调用就好了,访问http://8080/asyn测试,页面就会出现5秒的加载等待,这就是同步时等待的情况。在这里插入图片描述

使用异步任务:原基础代码变,添加@EnableAsync@Async两个注解即可。

1、在启动类中添加@EnableAsync注解,开启异步任务功能
@EnableAsync //开启异步注解功能。这是重点!!!重点!!!重点!!!
@SpringBootApplication
public class Ch08SpringbootTaskApplication {
    public static void main(String[] args) {
        SpringApplication.run(Ch08SpringbootTaskApplication.class, args);
    }
}
2、在需要开启异步的方法上添加@Async注解,告诉spring这是一个异步方法,springboot就会自己开启一个线程池进行调用,但是需要这个注解生效就必须在主程序上添加@EnableAsync注解。
@Async //告诉spring这是一个异步方法,只多了这一句代码
public void asyn() {
    System.out.println("任务正在处理中……");
    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("任务处理完成");
}
3、测试。重启,访问http://8080/asyn,网页几乎瞬间响应返回“OK”,后台还是在运行,直到处理完成。


所属网站分类: 技术文章 > 博客

作者:天使之恋

链接:http://www.javaheidong.com/blog/article/222506/1dcec379aeb01646a8ed/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

1 0
收藏该文
已收藏

评论内容:(最多支持255个字符)