• 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抽象出一个接口出来,然后用实现类去实现着两个接口,这样代码的扩展性会更好,也能满足更多的业务场景。

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

  • 相关阅读:
    酷商城新闻客户端源码
    一款类似塔防类的保卫羊村游戏android源码
    躲避球游戏ios源码
    卡通投掷游戏ios源码
    爱拼图游戏源码完整版
    newsstand杂志阅读应用源码ipad版
    linux下proxy设定的一般方法
    android中调用App市场对自身App评分
    Android AChartEngine
    设计模式之单例模式
  • 原文地址:https://www.cnblogs.com/shoshana-kong/p/10561700.html
Copyright © 2020-2023  润新知