SpringBoot异步任务
SpringBoot异步 任务
2023-06-13 09:17:20 时间
SpringBoot异步任务
一、序言
在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在Spring 3.x之后,就已经内置了@Async来完美解决这个问题。
二、测试步骤
1、创建AsyncService
这里先不加@Async
注解,并让线程休眠3秒
package com.atguigu.springboot.service;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Service;
@Service
public class AsyncService {
//告诉spring,这是一个异步方法
public void hello(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("处理数据中...");
}
}
2、创建AsyncController
package com.atguigu.springboot.controller;
import com.atguigu.springboot.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 "success";
}
}
3、不使用异步注解时运行测试:
结果:访问http://localhost:8080/hello
时,回卡一会才能出现success
4、使用异步注解
在AsyncService的方法里加上@Async
注解
在启动类上面加上@EnableAsync
注解开启注解功能
5、测试
使用了异步注解之后,页面直接显示success,控制台隔了3秒也正常输出处理数据中,说明确实是异步执行的
相关文章
- SpringBoot自动装配原理「建议收藏」
- SpringBoot的启动流程_springboot启动卡住了
- springboot事物oracle,SpringBoot 事务管理
- SpringBoot异步调用
- SpringBoot 整合WebSocket 简单实战案例[通俗易懂]
- springboot—@Async实现异步调用及异步回调Future「建议收藏」
- 聊聊springboot项目如何优雅的修改或者填充请求参数
- springboot 配置JedisPool 简洁有效 复制即可运行「建议收藏」
- springboot启动监听线程_Springboot启动流程
- Java项目分享-基于SpringBoot的ERP系统
- java 长轮询_基于springboot 长轮询的实现操作
- springboot详细讲解_Springboot项目
- springboot巧妙的处理图片
- SpringBoot之异步调用@Ansyc
- SpringBoot启动原理源码分析-第一篇
- SpringBoot集成Swagger
- springboot 之集成springcloud eureka
- SpringBoot中的定时任务的同步与异步你确定真的知道?
- 《Drools7.0.0.Final规则引擎教程》Springboot+规则重新加载详解编程语言
- SpringBoot整合Redis及Redis工具类撰写详解编程语言
- SpringBoot 读取yaml list详解编程语言