紧接上一篇文章,有大神评论说基于WebSyncTask
的异步任务处理和基于注解@Async
的异步任务处理之间有什么区别,其实大神评论的时候我也不清楚到底啥区别,因此就去学了一波!借此机会,总结以下:linux
@@EnableAsync
注解,并保证Spring可以扫描获得该注解@Async
定义FutureResult
获取对于基于注解的异步任务编程示例代码,小编已经将代码合并到上篇博客的代码中:nginx
代码地址为:github.com/SmallerCode…git
哈哈,给小编个start嘛!github
异步的概念小编以前也有说起过,很简单的道理就是我找你办事,我不用等你把事情办完,我又能够脱身去作别的事情了,举个例子就是当你发微信给你朋友,说成留言可能会更准确,等你朋友看到后把事情办好通知你就能够了。固然对于web请求响应而言,异步能够理解为将当前处理请求的线程释放掉,后台偷偷开启一个线程去执行,执行完成以后再返回,让处理请求的线程能够去处理其余进来的请求。web
nginx之因此并发那么优秀,我以为linux的epoll
模型能够了解下。还有,能够了解下servlet 3.0
以后对异步的支持。编程
因为处理请求的线程已经被释放掉,所以要求咱们的异步任务线程要和当前请求的上下文进行关联,才能正常的将数据响应出去。异步任务不永远都是顺利的,可能有以下三种状况:微信
void
声明对于获取返回值处理并发
采用ResultFuture
便可返回一个Future
对象,经过Future
对象的get
方法便可获得返回值。异步
对于异常信息处理线程
基于注解的异步任务异常处理和基于WebAsynctask
不一样,前者采用AsyncConfigurer
结合自定义异常类AsyncUncaughtExceptionHandler
的实现类进行处理。
谢谢阅读,全部上面讲到的代码实现,均可以在上面的github地址看到,若有错误,欢迎pr,若是对你有帮助,请给个star,么么哒!