java回调

Posted by     "麦子" on Thursday, 2019年07月04日

[TOC]

转载地址:https://www.jb51.net/article/110015.htm

回调

回调的概念

举个例子就是,我们想要问别人一道题,我们把题跟对方说了一下,对方说好,等我做完这道题,我就告诉你,这个时候就用到了回调,因为我们并不知道对方什么时候会做完,而是对方做完了来主动找我们。

同步回调

代码运行到某一个位置的时候,如果遇到了需要回调的代码,会在这里等待,等待回调结果返回后再继续执行。

异步回调

代码执行到需要回调的代码的时候,并不会停下来,而是继续执行,当然可能过一会回调的结果会返回回来。

具体代码

总体的代码还是很简单的,就是模拟了一个打印机,还有一个人,打印机具有打印的功能,但是打印需要时间,不能在收到任务的同时给出反馈,需要等待一段时间才能给出反馈。这个人想做的就是打印一份简历,然后知道打印的结果。这里面代码实现了这两种方式。

public interface Callback {
    void printFinished(String msg);
}
public class People {
    Printer printer = new Printer();

    /*
     * 同步回调
     */
    public void goToPrintSyn(Callback callback, String text) {
        printer.print(callback, text);
    }

    /*
     * 异步回调
     */
    public void goToPrintASyn(Callback callback, String text) {
        new Thread(new Runnable() {
            public void run() {
                printer.print(callback, text);
            }
        }).start();
    }
}
public class Printer implements Callback {
    public void print(Callback callback, String text) {
        System.out.println("正在打印 . . . ");
        try {
            Thread.currentThread();
            Thread.sleep(3000);// 毫秒
        } catch (Exception e) {
        }
        callback.printFinished("打印完成");
    }

    @Override
    public void printFinished(String msg) {
        System.out.println("打印机告诉我的消息是 ---> " + msg);
    }

    public static void main(String[] args) {
        People people = new People();
        Printer printer = new Printer();
        System.out.println("需要打印的内容是 ---> " + "打印一份简历");
        // people.goToPrintSyn(callback, "打印一份简历");
        people.goToPrintASyn(printer, "打印一份简历");
        System.out.println("我在等待 打印机 给我反馈");
    }

}

回调和观察者模式区别

转载地址:https://zhidao.baidu.com/question/111585686.html

接口回调: 是Java多态的一种体现, 可以把使用某一接口的实现类创建的对象的引用, 赋给该接口声明的接口变量中, 那么该接口变量就可以调用被实现的接口中的方法, 当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法。

观察者模式: 是将观察者和被观察的对象分离开, 当被观察的对象产生一定变化的时候, 观察者就会根据哪里产生的变化, 产生了变化, 而进行相应的处理.

**备注:**大部分观察着模式是用接口回调的方法来实现的.前者是一种体现, 后者是一种用前者实现的模式, 相当于后者调用前者。

「真诚赞赏,手留余香」

真诚赞赏,手留余香

使用微信扫描二维码完成支付