异步任务

在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在 处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用 多线程来完成此类任务,其实,在Spring 3.x之后,就已经内置了@Async来完 美解决这个问题

两个注解:

@EnableAysnc、@Aysnc

SpringBoot 使用异步任务

service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Service
public class AsyncService {

//告诉Spring这是一个异步方法
@Async
public void hello() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("处理数据中...");
}
}

controller

1
2
3
4
5
6
7
8
9
10
11
12
@RestController
public class AsyncController {

@Autowired
AsyncService asyncService;

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

开启异步注解功能

在启动类中开启

1
2
3
4
5
6
7
@EnableAsync  //开启异步注解功能
@SpringBootApplication
public class Springboot11AsynchronousTaskApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot11AsynchronousTaskApplication.class,args);
}
}

线程同步,会等3秒在响应结果,异步可以很好的解决这个问题