Lazy loaded image
异步方法调用(b
00 分钟
2024-10-9

意图

异步方法调用是在等待任务结果时调用线程不被阻塞的模式。该模式提供多个独立任务的并行处理,并通过回调或等待一切完成来检索结果。

解释

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

类图

notion image

适用性

在以下情况下使用异步方法调用模式
  • 您有多个可以并行运行的独立任务
  • 您需要提高一组顺序任务的性能
  • 您的处理能力有限或需要长时间运行的任务,调用者不应等待任务准备就绪

现实世界的例子

主要是用thread lock.wait + lock.notifyall

上一篇
flowable获取下一步会创建的用户任务
下一篇
Kafka实现oracle的CDC数据实时变更

评论
Loading...