sprigboot异步处理任务

在开发工作中,开发者会经常遇到要使用异步处理的任务,例如发邮件,这个过程会耗费不少时间,如果正常执行,那么后台发送邮件时,前台就会造成响应不动,直到邮件发送完毕。所以一般都是使用多线程去处理这些问题,但是每次需要开启多线程太麻烦了,所以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”,后台还是在运行,直到处理完成。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值