系统调用的分类:同步调用、异步调用、回调。

回调的分类:同步回调、异步回调。

回调的思路:A调用B,B处理完成后调用A提供的回调方法通知结果。

回调实例:

// 创建一个回调接口
public interface CallBack {
    public void callBack(String result);
}
// 用User类去实现回调
public class User implements CallBack {
    private static void question(){
        System.out.println("1+1好难,我要问大佬");
    }

    private Dalao dalao; //User类需要与Dalao类进行交互。通过保存Dalao对象的引用,User类可以方便地调用Dalao类的方法,如ans方法。

    public User(Dalao dalao){
        this.dalao = dalao;
        question();
    }

    public void ask(){
        System.out.println("我正在问大佬");
        dalao.ans(this); //将自身传过去,事务结束后就能够调用自身的回调方法了
    }

    @Override
    public void callBack(String result) {
        System.out.println("我是回调方法,现在返回回调结果:" + result);
    }
}
// 创建处理事务的类
public class Dalao {
    public void ans(CallBack callBack){
        System.out.println("大佬正在解答");
        callBack.callBack("1+1的最终答案是 2");
    }
}
// 开始进行交互
public class Main {
public static void main(String[] args) {
Dalao dalao = new Dalao();
User user = new User(dalao);
user.ask();
}
}

以上实现的是一个基础的同步回调,若要实现异步回调需要将事务实现添加到新线程中去处理。

public class Dalao {
    public void ans(CallBack callBack) {
        System.out.println("大佬正在解答");
        new Thread(() -> {
            // 模拟耗时操作
            try {
                Thread.sleep(2000); // 模拟2秒的耗时操作
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            callBack.callBack("1+1的最终答案是 2");
        }).start();
    }
}

从而实现异步回调。

此作者没有提供个人介绍
最后更新于 2025-04-16