Java 异步和同步回调
Sun Microsystems最初在1995年推出了Java,一种编程语言和计算平台。通过提供可靠的基础,Java从其谦逊的起源发展到如今的数字世界中占据重要地位,许多服务和应用程序都是在其上开发的。Java仍然用于为未来开发的尖端产品和数字服务中。
Java中的异步和同步是什么
Java的异步编程范式使团队能够在主应用程序线程之外分发工作负载和开发应用程序功能。当团队准备好功能时,代码将与主线程同步。
Java的同步功能允许管理多个线程对任何共享资源的访问。在多线程概念中,多个线程同时尝试访问相同的共享资源,导致不稳定的结果。为了实现线程之间的可靠通信,需要同步。
Java中的回调是什么
回调是JAVA编程中的一个特征词,其定义与许多其他编程语言类似。回调特性是将争议交给另一个特性。在选定的日程安排上触发特定事件后,回调特性会运行。回调特性的实际用途是通知特定类有关另一个类的操作状态。当我们在处理一些异步任务时,回调函数是非常有用的。当使用“事件处理程序”时,回调也是有用的,因为当用户在前端点击按钮时,它提供了某种形式的通知。因此,我们可以认为当执行常规编程任务(如执行多个操作和从网络下载数据)时,回调函数起着重要作用。至于在JAVA编程语言中应用回调属性,可以通过使用接口来实现。让我们考虑在JAVA编程中执行回调函数的一般过程。
回调特性的实现方法是什么?
- 我们首先定义我们想要在回调之后调用的接口方法。
-
为了实现接口回调方法,定义一个类。
-
为了注册回调接口,请设置对任意类的引用。
-
使用定义的引用调用回调方法。
Java中的回调类型有哪些
-
同步调用
-
异步调用
同步调用语法
-
第1步 - 创建一个接口。
-
第2步 - 创建void表达式。
-
第3步 - 创建类目录。
-
第4步 - 创建public void。
示例
// This is a program in Java for understanding
// the implementation of "Asynchronous call".
interface ExampleEventListener {
// Any type of method
// can be defined below
void exampleEvent();
}
// Define a random class
// in which the main section is also
// defined
public class Example2 {
private ExampleEventListener mListener; // This is the listener field
// Set up the Listener below using the public
// access modifier and the void return type
public void registerExampleEventListener(ExampleEventListener mListener) {
this.mListener = mListener;
}
// This is my synchronous task
// which needs to be performed.
public void myStuff() {
// An async task always executes within a new thread
// so a new thread must be created in order to execute.
System.out.print("The task being performed ");
System.out.println("here is a synchronous task");
// Check whether the listener is registered or not.
if (this.mListener != null) {
// Invoke the callback method of the ExampleEventListener class
mListener.exampleEvent();
}
}
public static void main(String[] args) {
Example2 obj = new Example2();
ExampleEventListener mListener = new Myclass();
obj.registerExampleEventListener(mListener);
obj.myStuff();
}
}
class Myclass implements ExampleEventListener {
@Override
public void exampleEvent() {
System.out.print("Performing callback after ");
System.out.print("the completion of the synchronous task");
// Perform any random routine operation
}
// Some Myclass methods
}
输出
The task being performed here is a synchronous task
Performing callback after the completion of the synchronous task
我们从显著的输出了解到,在JAVA编程语言中使用CallBack方法进行同步调用的角色是可以理解的。我们可以观察到每个讨论的步骤都与上述程序相结合。在上面提到的程序中,我们使用了事件监听器接口。
何时使用同步调用
我们在需要按照特定顺序依次执行程序中的几个任务的情况下使用同步调用。较少耗时的任务也被认为是同步调用。
异步调用语法
- 第1步 - 创建一个接口。
-
第2步 - 创建一个void类。
-
第3步 - 创建一个public void类。
-
第4步 - 创建一个public void。
示例
interface ExampleCallEventListener {
void exampleCallEvent();
}
public class Example1 {
private ExampleCallEventListener mListener;
public void registerExampleCallEventListener(ExampleCallEventListener mListener) {
this.mListener = mListener;
}
public void myStuff() {
new Thread(new Runnable() {
public void run() {
System.out.println("This is an example and tutorial here");
if (mListener != null) {
mListener.exampleCallEvent();
}
}
}).start();
}
public static void main(String[] args) {
Example1 obj = new Example1();
ExampleCallEventListener mListener = new MyClass();
obj.registerExampleCallEventListener(mListener);
obj.myStuff();
}
}
class MyClass implements ExampleCallEventListener {
@Override
public void exampleCallEvent() {
System.out.println("Performing callback after the completion of an Async Task");
}
}
输出
This is an example and tutorial here
Performing callback after the completion of an Async Task
在上述程序中,我们了解到在JAVA编程语言中可以使用回调方法来接受异步调用的角色。我们可以观察到一个新的线程被创建,并且回调在该线程中被调用。我们在程序中使用了事件监听器接口。
何时使用异步调用
我们在任务之间不相互依赖,因此一个任务中断不会影响其他任务的情况下使用异步调用。需要更长时间的任务也被认为是异步调用。
同步调用和异步调用在Java中的区别
定义
同步调用是执行代码在继续之前等待事件发生的回调。而异步调用则是指不阻塞事务的回调。这是同步调用和异步调用在Java中的主要区别。
功能
Java中有同步调用和异步调用,它们在等待事件时处理代码执行的方式不同。与同步调用或回调不同,异步调用允许程序在等待期间继续执行代码。
应用
根据任务完成的需求,程序员可以根据自己的需要选择使用基于同步或异步的两种不同的回调方法。当执行例行任务需要较少的处理时间时,同步回调很方便;而当执行时间较长的复杂和不相关的过程时,异步回调更合适。类似地,同步与异步调用在基于Java的编码实践中也存在差异。
结论
实现Java编程允许同时使用同步和异步调用。与异步调用执行时程序可以无缝执行其他代码不同,同步调用需要事件发生才能采取进一步的操作。