截止到今天,基于Spring Boot 的异步HTTP服务,我们全部说完了,总共分了7个工程,分别是
1.Spring Boot @Async Future 使用方法说明
https://www.jianshu.com/p/7482721e3ac8
2.Spring Boot @Async 使用线程池
https://www.jianshu.com/p/dabd65f617bb
3.Spring Boot @Async 异步异常处理
https://www.jianshu.com/p/11c78717799b
4.Spring Boot 基于Servlet 的异步服务
https://www.jianshu.com/p/53d1a907f05f
5.Spring Boot 基于Callable的异步服务
https://www.jianshu.com/p/9f7928143735
6.Spring Boot 基于DeferredResult的异步服务
https://www.jianshu.com/p/fb0645033f0f
7.Spring Boot 基于WebAsync的异步服务
https://www.jianshu.com/p/d37be61204ea
7个工程说的其实是5种异步服务的调用方式,分别是使用@Async注解、Servlet、Callable、DeferredResult、WebAsync。每种方式都有自己的特点和特殊,我们分析做表如下:
属性说明 | Async注解 | Servlet | Callable | DeferredResult | WebAsync |
---|---|---|---|---|---|
是否有超时处理 | 有 | 有 | 无 | 有 | 有 |
是否有完成后调用方法 | 有 | 有 | 无 | 有 | 有 |
是否是完全的HTTP请求异步处理 | 否 | 是 | 是 | 是 | 是 |
是否能统一异常处理 | 能 | 能 | 能 | 能 | 能 |
特点及优点 | 使用简单、功能完善 | 代码成熟,运行稳定 | 使用简单 | Callable异步处理的替代方法,可取得其他线程的执行结果 | 代码成熟、功能完善 |
缺点 | 无法实现完全的HTTP异步 | 需要传入HttpServletRequest和HttpServletResponse,编程复杂。 | 功能不足 | 需要开发人员对异步有一定了解 | 需要开发人员对异步有一定了解 |
推荐指数 | ★★★★ | ★ | ★★ | ★★★★★ | ★★★★★ |
总结说明
单从使用简单和理解方法,Async注解的使用方法最简单易用,但是在处理浏览器端的请求时,不能完全说是异步(也许是我没弄明白),DeferredResult和WebAsync的方式,都是不错的异步编程选择,他们之间使用方式的区别不大,性能那个更好,我没有测试过,不清楚。待下回,我测试完成以后,再给大家说说性能问题。
网友评论