美文网首页
Java中的回调机制

Java中的回调机制

作者: sunpy | 来源:发表于2018-07-24 20:26 被阅读18次

调用方式

例子:

a -> b

class A {
    void a() {
      ···
      new B().b();
      ···
    }
    
}

class B {
    void b(){}
}

同步调用情况

同步调用是最简单的方式,按照顺序,a调用b,当b执行完,那么a才会继续往下执行。如果b一直在执行,那么a将处于阻塞。这种情况适用于整个流程顺畅,不会出现执行时间过长的情况。不适于中间出现执行时间过长,导致整体性能下降,一部分代码长时间无法执行。

异步调用情况

异步调用就是为了避免出现同步调用阻塞的情况的。当a调用b,不管b执行多长时间,都会继续向下执行a的代码。当b执行完将通知a(a监听b的操作),做哪些操作就是回调。

回调

a -> b -> a (callback)

流程解释:
① 首先A类中a方法调用B类中的b方法。
② 然后B类中的b方法执行完毕,再执行A类中的callback方法。
注意:回调的关键是将自己的引用传递过去。可以看出回调的形式,是两个方法间的双向调用。而不使用回调,只是单方向调用。
举例:
快递员派送获取到客户手中,流程快递员通知客户快递送到丰巢了,然后客户领取到快递后,确认了快递员派送成功的单子。
回调接口:

public interface ICallback {
    public void confirmOrder(String confirmMsg);
}

快递员:

public class Sender implements ICallback{

    private ICustomer iCustomer;
    
    public Sender(ICustomer iCustomer) {
        this.iCustomer = iCustomer;
    }

    public void informCustomer() {
        iCustomer.getGoods(this);
    }

    @Override
    public void confirmOrder(String confirmMsg) {
        System.out.println("快递员收到的订单回复信息:" + confirmMsg);
        
    }
}

客户接口:

public interface ICustomer {
    public void getGoods(ICallback iCallback);
}

具体客户A:

public class CustomerA implements ICustomer{

    @Override
    public void getGoods(ICallback iCallback) {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        
        iCallback.confirmOrder("客户A已经确认订单");
    }
}

测试类:

public class CallbackTest {

    public static void main(String[] args) {
        ICustomer customerA = new CustomerA();
        Sender sender = new Sender(customerA);
        sender.informCustomer();
    }
}

运行结果:


1.jpg

回调机制在设计模式的应用:
我的博客 - 观察者模式:
https://blog.csdn.net/ya_1249463314/article/details/52444310

相关文章

  • Java基础9:解读Java回调机制

    本文主要介绍了Java中的回调机制,以及Java多线程中类似回调的机制。 具体代码在我的GitHub中可以找到 h...

  • Java相关博客推荐阅读--Java回调机制

    Java回调机制 这篇文章循循渐进的介绍了什么是Java回调机制,以及在Java中的简单实现。通过形象生动的例子,...

  • Thinging in Java阅读时遇到的问题

    菜鸟教程Java回调机制解读Java回调机制总结内部类标识符JAVA foreach和普通for循环是否需要判断为...

  • Java中的回调机制

    调用方式 例子: 同步调用情况 同步调用是最简单的方式,按照顺序,a调用b,当b执行完,那么a才会继续往下执行。如...

  • Java中的回调机制

    最近看书老是看到书里说道回调方法,一脸懵逼的不懂什么意思,于是就google查了下,发现好多说的都不是特别的直白,...

  • java接口回调机制

    转载的正文 地址--理解java接口回调机制

  • Java中回调机制的使用

    1,场景:模拟教师给学生布置作业,学生完成后将结果回告教师2,初始化学生类: 3,设置回调方法。(此方法被Stud...

  • java回调机制

    回调的基本概念 在java中,我们可以将回调简单理解为:类A中的a方法调用类B中的b方法,而类B的b方法有反过来调...

  • java回调机制

    java的调用机制主要分为同步调用、异步调用、回调这三种,当然也包括一些其它的,例如异步回调等。 同步调用是我们平...

  • Java回调机制

     回调是一种设计模式,应用场景:即为了避免阻塞,新开线程去执行任务,当新开的线程把任务执行完毕,需要返回通知结果。...

网友评论

      本文标题:Java中的回调机制

      本文链接:https://www.haomeiwen.com/subject/oceymftx.html