系统调用的分类:同步调用、异步调用、回调。
回调的分类:同步回调、异步回调。
回调的思路: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();
}
}
从而实现异步回调。
Comments NOTHING