java回调函数-异步回调-简明讲解
叙言:
异步回调常用于某些业务需要很长时间处理,但是又需要立刻返回结果,这种情况都需要开辟线程独立处理需要长时间多的业务,也无处理完了,回调回调函数,再去处理与之有关的需要在该业务之后处理的业务。
之前看到网上说的回调,虽然有很多说明,但是还是不太好理解,而且比较繁复,个人感觉做的说明并不实用,故而才有了写这篇文的想法,希望拙见能够帮助到看此文的你。
1、网上有很多回调例子,对于同步回调,这里就不细说了,就是在我这个异步回调的基础上把线程去掉就行了。
2、网上说回调函数的时候,很多都是写两个类,一个接口,有些虽然没有接口,但是还是两个类,基本上都是使用两个不同的类来做说明的,其实没有必要,当我们需要用异步回调的时候,再去创建一个类,甚至一个接口,还需要实例化对象去调用方法,这种方式并不太实用。
3、我这里就是在一个类里处理完所有的回调过程,需要调用异步的时候,再原来代码的基础上添加一个线程调用需要时间处理的业务方法,再写一个方法(回调函数),用于当需要时间处理的那个业务处理完之后,去完成之后的业务。还需要一个方法,这个方法就是用来处理需要长时间处理的业务的。其实就是在主线程的基础上再开一个线程,相当于在原来代码的基础上添加三个方法就能完成异步回调。
4、下面就是我的代码,这里用main测试的,所以方法都是static修饰的静态方法。
public class CallBack {
public static void meNeed() {
//开启线程--->点外买
new Thread(new Runnable() {
@Override
public void run() {
//带什么外卖
String food = "你好,请帮点一份蛋炒饭盖饭,要辣,不要麻,要放鸡精,不放味精,盐要低钠盐,还要多放点葱花";
//下单
takeouts(food);
}
}).start();
//玩游戏去
playGames();
}
/**
* @throws @Description:点完外卖,我就去玩游戏去了
*/
public static void playGames() {
System.err.println("我玩游戏去了");
}
/**
* @throws @Description:外卖送到门外,敲门提示我外卖到了,叫我去拿外卖----这个方法就是所谓的--->回调函数
*/
public static void callback(String message) {
//这里就是需要等待之后才能进行的后续业务逻辑
System.err.println(message);
}
/**
* @throws @Description:
* @param help
*/
public static void takeouts(String food) {
// 模拟带外卖需要的时间
for (int i = 0; i < 10000; i++) {
for (int j = 0; j < 100; j++) {
for (int k = 0; k < 10000; k++) {
for (int l = 0; l < 100; l++) {
}
}
}
}
// 外卖送到了门口,敲门
String message = "你的外卖到了";
callback(message);
}
//测试回调
public static void main(String[] args) {
meNeed();
}
}