模块间的调用关系
在一个应用系统中,无论使用何种语言开发,必然会存在模块之间的调用,调用的方式主要包含:
同步调用
同步调用是最基本也是最简单的调用方式,类A的方法a在调用类B的方法b,会一直等待b方法执行完成,方法a才进行后续的代码执行。这种方式一般使用这种方式适用于方法b执行的时间不长的情况下,因为如果方法b执行的时间过长,方法a余下的代码逻辑是无法执行下去的,这样会造成整个流程的阻塞
异步调用
异步调用是为了解决同步调用可能出现的阻塞问题,类A的方法a通过新起线程的方式调用类B的b方法,代码接着直接继续往下执行,无需等待b方法的执行结果。这样无论方法b执行时间多久,都不会阻塞方法a的执行。但是这种方式下的调用关系,由于方法a无需等待方法b的执行完成,如果方法a中需要使用到方法b的执行结果,必须通过一定的方式对方法b的执行结果进行监听。在Java中,可以使用Future+Callable的方式实现
回调
回调的思想在于:
- 类A的方法a调用类B的b方法
- 类B的b方法执行完毕主动调用类A的callback方法
这样的调用方式是一种双向的调用方式,其核心是回调方将本身即this传递给调用方,这样调用方就可以在调用完毕之后告诉回调方它想要的信息。