详解java 三种调用机制(同步、回调、异步)

yizhihongxing

详解java 三种调用机制(同步、回调、异步)

调用机制的概念

调用机制指的是在进行函数调用时,系统进行操作的方式。针对不同的操作方式,可以分为同步、回调、异步这三种机制。

同步调用机制

同步调用机制指的是在函数调用时,必须等待该函数返回结果之后才能继续执行下一步操作的调用方式。在同步调用过程中,如果该函数阻塞或运行时间较长,那么整个程序的性能就会变得比较低下。因此,在同步调用中,一般都是对计算量小的函数进行操作。

下面是一个Java同步调用的示例:

public class SyncDemo {
    public static void main(String[] args) {
        int result = synchronousSum(1, 2);
        System.out.println(result);
    }

    public static int synchronousSum(int a, int b) {
        return a + b;
    }
}

在上述示例中,synchronousSum函数的返回结果必须等待该函数执行完成之后才能进行打印输出的操作。

回调调用机制

回调调用机制指的是在进行函数调用时,调用方不会等待函数返回结果,而是继续进行自己的操作。当被调用函数执行完成时,系统会通知调用方,并通过一个回调函数将结果返回给调用方。在回调调用中,可以使用函数指针或接口回调的方式实现。

下面是Java回调机制的示例:

interface Callback {
    void onExecuted(int result);
}

public class CallbackDemo {
    public static void main(String[] args) {
        asynchronousSum(1, 2, new Callback() {
            @Override
            public void onExecuted(int result) {
                System.out.println(result);
            }
        });
    }

    public static void asynchronousSum(int a, int b, Callback callback) {
        new Thread(() -> {
            int result = a + b;
            callback.onExecuted(result);
        }).start();
    }
}

在上述示例中,asynchronousSum被调用时,不会等待该函数执行完成。而是将回调函数Callback传递给该函数并启动一个新线程执行a+b的计算操作,当计算完成后,通过回调函数返回结果。

异步调用机制

异步调用机制指的是在进行函数调用时,调用方不会等待函数返回结果,而是继续进行自己的操作。当被调函数执行完成时,系统会通知调用方并返回结果。

下面是Java异步调用的示例:

import java.util.concurrent.*;

public class AsyncDemo {
    public static void main(String[] args) throws Exception {
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        Future<Integer> future = executorService.submit(() -> {
            Thread.sleep(1000);
            return 1 + 2;
        });
        System.out.println("Main thread do other things...");
        Integer result = future.get();
        System.out.println("Result is " + result);
        executorService.shutdown();
    }
}

在上述示例中,通过ExecutorService的submit方法异步执行计算任务,并通过Future对象获取结果。在获取结果之前,主线程可以继续执行其他操作。

结语

通过上面的介绍,我们知道了同步、异步和回调的区别和特点。不同的场景可以使用不同的调用机制来进行程序优化,从而提高代码的性能和可读性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解java 三种调用机制(同步、回调、异步) - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 深入了解JAVA数据类型与运算符

    深入了解JAVA数据类型与运算符 JAVA数据类型 JAVA中的数据类型分为两类,基本数据类型和引用数据类型。 基本数据类型 JAVA的基本数据类型包括以下8种: byte:1字节,范围-128~127 short:2字节,范围-32768~32767 int:4字节,范围-2147483648~2147483647 long:8字节,范围-92233720…

    Java 2023年5月26日
    00
  • Java 安全模型,你了解了吗

    Java 安全模型,你了解了吗? Java是一种广泛用于应用程序和互联网的编程语言,其安全模型可确保Java代码执行时的安全性和完整性,从而使Java成为一种极具安全性的编程语言。下面来介绍Java安全模型的完整攻略。 Java安全模型基础 Java安全模型是由Java运行环境提供的一种安全机制,它通过控制Java程序访问资源的方式来保护主机和网络中的资源。…

    Java 2023年5月24日
    00
  • 开发实例:JSP中实现全文检索

    下面我将详细讲解“开发实例:JSP中实现全文检索”的完整攻略,包括开发环境的搭建、代码实现、运行调试等内容。 开发环境搭建 在进行本项目的开发之前,我们需要准备好以下工具: Java 8及以上版本 Apache Tomcat 8及以上版本 Eclipse IDE 步骤: 安装Java并设置环境变量; 下载并解压Tomcat,配置Tomcat的环境变量; 下载…

    Java 2023年6月15日
    00
  • mybatis集成到spring的方式详解

    关于“mybatis集成到spring的方式详解”的完整攻略,以下是步骤及示例。 1. 引入相关依赖 在pom.xml文件中引入mybatis和mybatis-spring的依赖,如下所示: <!– MyBatis –> <dependency> <groupId>org.mybatis</groupId>…

    Java 2023年5月19日
    00
  • Spring零基础到进阶之鸿蒙开篇

    Spring零基础到进阶之鸿蒙开篇 一、学习前准备 理解Java基础语法,掌握面向对象编程思想。 了解MVC模式和IoC容器的原理。 确保已安装好JDK与Eclipse/IntelliJ IDEA等IDE。 下载安装Spring Framework。 二、Spring入门 1. 下载Spring Framework 可通过Git进行下载:git clone …

    Java 2023年5月19日
    00
  • SpringBoot登录用户权限拦截器

    下面是详细讲解“SpringBoot登录用户权限拦截器”的完整攻略: 什么是SpringBoot登录用户权限拦截器 SpringBoot登录用户权限拦截器主要用于过滤用户请求并确保只有已经登录并拥有相应权限的用户才能够访问特定的资源。在Web应用程序中,用户必须先经过身份验证和授权才能访问特定的页面或资源。因此,SpringBoot登录用户权限拦截器提供了一…

    Java 2023年6月3日
    00
  • 将Tomcat Service化

    将Tomcat Service化是指将Tomcat服务器安装为系统服务,使其能够在系统启动时自动启动,而无需手动启动Tomcat。以下是将Tomcat Service化的完整攻略: 1. 下载和安装Tomcat 首先需要在官网上下载适合自己操作系统的Tomcat,并进行安装。 2. 配置JAVA环境变量 在系统环境变量中配置JAVA_HOME变量,使其指向J…

    Java 2023年6月15日
    00
  • 浅析jQuery Ajax通用js封装

    我将为您详细讲解“浅析jQuery Ajax通用js封装”的完整攻略: 1. 什么是jQuery Ajax通用js封装 jQuery Ajax通用js封装是一种在Javascript中使用jQuery库对Ajax进行封装的方法。通过对Ajax通用操作的封装,可以实现代码的重用,减少代码冗余,提高代码的可维护性。 2. jQuery Ajax通用js封装要点 …

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部