zoukankan      html  css  js  c++  java
  • java常见的几种调用机制(同步调用,异步调用,回调)

     

    1、同步调用

    同步调用是最基本的调用方式,对象b中的方法直接调用对象a的方法,这个时候程序会等待对象a的方法执行完返回结果之后才会继续往下走。

    代码如下:

    public class A {
    public void methodA()
    {
    System.out.println("this is class A method");
    }
    }

    public class B {
    public void methodB()
    {
    A a = new A();
    a.methodA();
    System.out.println("this is class B method");
    }

    }

    public class Test {
    public static void main(String[] args) {
    B b = new B();
    b.methodB();
    }

    }

    结果:

    this is class A method

    this is class B method

    2、异步调用

    对象b中的方法调用对象a的方法,程序并不需要等待对象a的方法返回结果值,直接继续往下走。

    代码如下:

    public class A extends Thread{
    @Override
    public void run() {
    try {
    Thread.sleep(3000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    System.out.println("this is class A method");
    }

    }

    public class B {
    public void methodB()
    {
    A a = new A();
    a.start();
    System.out.println("this is class B method");
    }

    }

    public class Test {
    public static void main(String[] args) {
    B b = new B();
    b.methodB();
    }
    }

    结果:

    this is class B method

    this is class A method

    说明:异步调用我们通常采用多线程的方法来达到目的

    3、回调

    对象a的方法methodA()中调用对象b的methodB()方法,在对象b的methodB()方法中反过来调用对象a的callBack()方法,这个callBack()方法称为回调函数,这种调用方法称为回调。

    代码如下:

    public class A {
    public void methodA()
    {
    B b = new B();
    b.methodB(new A());
    System.out.println("this is class A method : methodA");
    }
    public void callBack()
    {
    System.out.println("this is class A method : callBack");
    }

    }

    public class B {
    public void methodB(A a)
    {
    System.out.println("this is class B method : methodB");
    a.callBack();
    }

    }

    public class Test {
    public static void main(String[] args) {
    A a = new A();
    a.methodA();
    }

    }

    运行结果:

    this is class B method : methodB
    this is class A method : callBack

    this is class A method : methodA

    注意:这里如果为了代码的扩展性更好,可以把类A与类B抽象出一个接口出来,然后用实现类去实现着两个接口,这样代码的扩展性会更好,也能满足更多的业务场景。

    回调的核心在于:回调方将本身对象传给调用方,调用方在本身代码逻辑执行完之后,调用回调方的回调方法。

  • 相关阅读:
    几个常见移动平台浏览器的User-Agent
    正则表达式那些事儿(三)
    正则表达式那些事儿(二)
    正则表达式那些事儿(一)
    jQuery官网plugins栏目下那些不错的插件
    UVA 11729 Commando War 突击战 【贪心】
    HDOJ 2084 数塔 【dp】
    HDOJ 1465 不容易系列之一 【错排公式 递推】
    HDOJ 2046 骨牌铺方格 【递推】
    HDOJ 2044 一只小蜜蜂... 【递推】
  • 原文地址:https://www.cnblogs.com/shoshana-kong/p/10561700.html
Copyright © 2011-2022 走看看