异步任务-springboot
- 异步:异步与同步相对,当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。也就是说无论异步方法执行代码需要多长时间,跟主线程没有任何影响,主线程可以继续向下执行。
实例:
在service中写一个hello方法,让它延迟三秒
@Service
public class AsyncService {
public void hello(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(\"数据正在处理!\");
}
}
让Controller去调用这个业务
@RestController
public class AsyncController {
@Autowired
AsyncService asyncService;
@GetMapping(\"/hello\")
public String hello(){
asyncService.hello();
return \"ok\";
}
}
启动SpringBoot项目,我们会发现三秒后才会响应ok。
所以我们要用异步任务去解决这个问题,很简单就是加一个注解。
- 在hello方法上@Async注解
@Service
public class AsyncService {
//异步任务
@Async
public void hello(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(\"数据正在处理!\");
}
}
- 在SpringBoot启动类上开启异步注解的功能
@SpringBootApplication
//开启了异步注解的功能
@EnableAsync
public class Sprintboot09TestApplication {
public static void main(String[] args) {
SpringApplication.run(Sprintboot09TestApplication.class, args);
}
}
问题解决,服务端瞬间就会响应给前端数据!
树越是向往高处的光亮,它的根就越要向下,向泥土向黑暗的深处。
来源:https://www.cnblogs.com/H-scholar/p/16114146.html
本站部分图文来源于网络,如有侵权请联系删除。