Java 中的异步调用

2024年9月10日 | 阅读 6 分钟

在本文中,我们将学习 Java 编程语言中的异步调用。在文章的最后,我们将清晰地了解异步调用及其与 Java 编程语言中的同步调用的区别。首先,让我们了解一下在编程意义上的“回调”。

Java 中的回调是什么?

CallBack 关键字用于在 Java 编程以及许多其他编程语言中定义函数。回调函数是作为参数传递给另一个函数的。回调函数将在程序中发生特定事件后执行。回调函数的真正目的是告知特定类有关另一个类中工作的状态。

当我们处理一些异步任务时,回调函数很有用。在使用“事件处理”时,回调也很有用,因为它用于在用户单击界面上的按钮时提供某种通知。因此,我们可以理解,回调函数在执行程序中的例行任务(例如执行各种操作和从网络获取数据)时起着至关重要的作用。至于在 Java 编程语言中实现回调函数,可以使用接口来实现。让我们看看在 Java 编程中实现回调函数的标准过程。

实现回调函数遵循的步骤

  1. 我们首先定义一个接口中的方法,我们希望在回调后调用这些方法。
  2. 为了实现接口的回调方法,请定义一个类。
  3. 要注册回调接口,请在某个随机类中定义一个引用。
  4. 使用定义的引用来调用回调方法。

Java 中的回调类型

  1. 同步调用
  2. 异步调用

什么是同步调用?

一种阻止程序执行其代码的调用,一旦事件返回响应或完成,调用就从事件返回到回调函数的调用称为同步调用。所有操作都由回调在返回到语句之前执行。

同步调用等待执行,因此完成程序所需的时间比实际时间要长。我们可以在这些类型的程序中发现显著的时间延迟。同步调用中的任务是按顺序执行的。因此,当问题必须按顺序完成且问题不需要太多时间时,用户可以使用同步调用。代码的执行暂停,代码在恢复之前等待事件。同步调用的过程就是这样进行的。现在,让我们通过一个 Java 程序来理解同步调用。

Example2.java

输出

The task that is being performed here is synchronous task
Performing callback after the completion of Synchronous task

解释

通过了解上述程序,我们可以理解同步调用在 Java 编程语言中使用回调方法的作用。我们可以观察到,上面程序中包含了讨论的每一步。如上所述,我们在程序中使用了事件监听器接口。

何时使用同步调用?

我们在需要按特定顺序一个接一个地执行多个任务的情况下使用同步调用。耗时较短的任务也属于同步类型。

什么是异步调用?

一种不会阻止程序执行其代码的调用,一旦事件完成,调用就从事件返回到回调函数的调用称为异步调用。为了避免这种情况,必须创建一个新线程,并且在 Java 编程的上下文中,回调方法应该在线程内调用。不一定必须在线程内调用回调方法。回调在被调用时也可以创建一个新线程,从而使调用异步。

异步调用中的任务是并行或同时执行的,即,如果一个任务在特定时间执行,那么另一个任务也可以在同一时间工作,而无需等待前一个任务完成。因此,当问题非常大且任务必须并行完成,并且任务之间不相互依赖时,用户或程序员可以使用异步调用。在这种调用中,代码的执行不会被要求等待。异步调用的过程就是这样进行的。现在,让我们通过一个 Java 程序来理解异步调用。

输出

This is Example and Tutorial here
Performing callback after the completion of an Async Task

解释

通过了解上述程序,我们可以理解异步调用在 Java 编程语言中使用回调方法的作用。我们可以观察到,创建了一个新线程,并且回调本身在该线程内被调用。如上所述,我们在程序中使用了事件监听器接口。

何时使用异步调用?

我们在程序中的任务之间不相互依赖的情况下使用异步调用,因此一个任务的执行暂停不会影响其他任务。耗时较长的任务也属于异步类型。