回调:类 A 调用类 B 的方法,类 B 的方法执行完毕后主动调用类 A 的 callback() 方法

    实例:小王叫小明去街上买东西,等小明东西买好后再主动通知小王

    • 小王设定为 A 类,需要实现一个 CallBack 接口
    • 小明设定为 B 类,有个 buy 的方法,支持同步和异步调用 ```java // 回调接口 public interface Callback { void ready(); }

    // A类,即小王,有一个指使小明的方法和回调方法 public class A implements Callback {
    public void order(B b) { // 同步回调,传入自身 // 该方法会阻塞 b.syncBuy(this);

    1. // 异步回调
    2. // 该方法不会阻塞
    3. b.asyncBuy(this);
    4. }
    5. @Override
    6. public void ready() {
    7. System.out.println("收到小明的通知,知道东西已经买好:" + LocalDateTime.now());
    8. }

    }

    // B类,即小明,去买东西 public class B { public void buy(){ System.out.println(“小明开始行动…”); try { // 小明行动中 TimeUnit.SECONDS.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(“小明东西已经买好…”); }

    1. // 同步调用
    2. public void syncBuy(Callback callback) {
    3. // 买东西的逻辑
    4. this.buy();
    5. // 回调方法通知
    6. callback.ready();
    7. }
    8. // 异步回调
    9. public void asyncBuy(Callback callback) {
    10. new Thread(()->{
    11. this.syncBuy(callback);
    12. }).start();
    13. }

    }

    // 测试 public class Main { public static void main(String[] args) { A a = new A(); B b = new B(); a.order(b); } } ``` java 实现回调机制的大概步骤:

    • 定义回调接口 CallBack
    • 类 A 实现回调接口 CallBack
    • 类 B 中有方法 method(CallBack cb)
    • A 调用 B 的 method() 方法,传入自身作为参数
    • method() 方法执行完毕后,调用回调方法