Java关于回调的易理解解读

来源:互联网 发布:人的意识与人工智能 编辑:程序博客网 时间:2024/05/17 04:19
你好,我写了个很简单的代码,你一看就明白了public class A {int value = 1001;public A() {// A的构造函数,执行B的exec()方法,里面又带有对A的getValue()方法调用,这个就叫做回调B b = new B(this);b.exec();}public int getValue() {return value;}public static void main(String[] args) {new A();//构造函数里已经发生了回调,所以不需要更多的代码}}class B {private A a;public B(A a) {this.a = a;}public void exec() {System.out.println(a.getValue());// 这里调用了a的getValue()方法}

}

————————————————————————————————————————————————————————————————

所谓回调,就是客户程序C调用服务程序S中的某个方法a,然后S又在某个时候反过来调用C中的某个方法b,对于C来说,这个b便叫做回调函数。


————————————————————————————————————————————————————————————————

比如你写了两个类A和B,并且各生成一个对应的实例a 和b ,在a 中有一个方法fa( 此方法只负责生成两个随机数)要调用b中的一个方法fb(此方法对两个数进行求各) 来进行求和,fb求得结果后要调用a的另一个方法ffa(此方法用于显示求得的结果),这时ffa就叫作回调函数,(反回来调用一下的意思)为什么要这么麻烦呢,如果fb直接返回结果不好吗,试想如果fb执行时间较长,那么fa就会一直等结果而导致fa不往下执行了,此时如果用回调这个功能实现,由于 回调函数一般是由系统异步调用的,方法fa调用fb后就不用等而直接往下执行,比如可以再生成两随机数给fb,fb会依次得到结果后通过回调机制来调用ffa显示出来,其实就是为实现生成随机数和计算随机数的异步执行。好象fa和fb是两个独立执行的线程,提高程序效率。










0 0
原创粉丝点击