spring@Async异步获取结果
涉及到两个问题:
- 解决同类调用@Async方法无效问题。
- 用completableFuture替换Future,解决Future.get()获取结果阻塞的问题。
这里只提供利用@Async注解的解决方案,因为使用了spring,更倾向于用spring的注解来解决问题.把线程池注册成bean交给spring管理,比自己每次生成销毁或者自己控制全局线程池要优雅的多.
另一种解决方案,因为线程池是通过@bean方式注册成bean,直接@autowied线程池,然后利用正常的线程池+countDownLatch也可以解决(未验证)。
以下是基于@async的解决方案:
代码不连续,这里只贴一下关键代码,以免非关键代码干扰思路,不懂的留言或者邮件我cheyantao@foxmail.com,看见了及时回你。
1 | . |
OK ,以上.