意图
异步方法调用是在等待任务结果时调用线程不被阻塞的模式。该模式提供多个独立任务的并行处理,并通过回调或等待一切完成来检索结果。
解释
现实世界的例子
发射太空火箭是一项令人兴奋的事业。任务指挥部下达发射命令,经过一段不确定的时间后,火箭要么成功发射,要么惨遭失败。
简单来说
异步方法调用启动任务处理并在任务准备好之前立即返回。任务处理的结果稍后返回给调用者。
维基百科说
在多线程计算机编程中,异步方法调用 (AMI),也称为异步方法调用或异步模式,是一种在等待被调用代码完成时调用站点不被阻塞的设计模式。相反,当回复到达时,调用线程会收到通知。轮询答复是不受欢迎的选择。
程序示例
在这个例子中,我们正在发射太空火箭并部署月球车。
该应用程序演示了异步方法调用模式。该模式的关键部分是
AsyncResult
异步评估值的中间容器,AsyncCallback
可以提供在任务完成时执行并AsyncExecutor
管理异步任务的执行。ThreadAsyncExecutor
是一个实现AsyncExecutor
。接下来突出显示它的一些关键部分。然后我们准备发射一些火箭,看看一切如何协同工作。
这是程序控制台输出。
类图
适用性
在以下情况下使用异步方法调用模式
- 您有多个可以并行运行的独立任务
- 您需要提高一组顺序任务的性能
- 您的处理能力有限或需要长时间运行的任务,调用者不应等待任务准备就绪