模块间的调用分为三种方式:同步调用、异步调用、回调。
1.同步调用:是最基本的调用方式,类A的方法调用类B的方法,一直等待类B的方法执行完毕,类A的方法才继续执行下去,这种调用方法适合类B方法执行的时间不长的情况,因为类B方法执行时间过长会导致类A方法的余下代码不能顺利执行导致整个流程的阻塞。是一种单向调用。
2.异步调用:为了解决同步调用可能出现的阻塞,而导致整个流程卡住的一种调用方式。类A的方法通过新起线程的方式调用类B的方法,代码接着直接往下执行,这样无论B类方法执行时间多久,都不会阻塞住类A方法的执行。但是由于类A方法不等待类B方法的执行完成,在类A方法需要类B方法执行结果的情况下,必须通过一定的方式对类B方法的执行结果进行监听。在Java中,可以使用Future+Callable的方式做到这一点。
3.回调:回调机制就是Java调用机制中的一种调用方法,类A的a()方法调用类B的b()方法,类B的b()方法执行完毕主动调用类A的callback()方法这样一种调用方式组成了上图,也就是一种双向的调用方式。回调和异步调用的关系非常紧密:使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。
java的回调是通过接口或者内部类来实现的。是功能定义和功能实现分享的一种手段,是一种耦合设计思想。作为一种架构,必须有自己的运行环境,并且提供用户的实现接口。
(1)同步回调:代码运行到某一个位置的时候,如果遇到了需要回调的代码,会在这里等待,等待回调结果返回后再继续执行。
(2)异步回调:代码执行到需要回调的代码的时候ÿ