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();
            }
        }