java回调实现_详解Java回调的原理与实现

回调原本应该是一个非常简单的概念,但是可能因为平时只用系统为我们写好的回调的接口了,自己很少实现回调,所以在自己实现回调的时候还是有一点点晕的,现在写这篇文章记录一下,也和大家分享一下怎么写回调接口。

回调

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

同步回调

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

异步回调

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

具体代码:

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

Callback.java

public interface Callback {

void printFinished(String msg);

}

Printer.java

public class Printer {

public void print(Callback callback, String text) {

System.out.println("正在打印 . . . ");

try {

Thread.currentThread();

Thread.sleep(3000);// 毫秒

} catch (Exception e) {

}

callback.printFinished("打印完成");

}

}

People.java

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

}

}

Main.java

public class Main {//测试类,同步回调

public static void main(String[] args) {

People people = new People();

Callback callback = new Callback() {

@Override

public void printFinished(String msg) {

System.out.println("打印机告诉我的消息是 ---> " + msg);

}

};

System.out.println("需要打印的内容是 ---> " + "打印一份简历");

people.goToPrintSyn(callback, "打印一份简历");

System.out.println("我在等待 打印机 给我反馈");

}

}

b16d430f549f6991b7dd611164a1a31c.png

Main.java

public class Main {//异步回调

public static void main(String[] args) {

People people = new People();

Callback callback = new Callback() {

@Override

public void printFinished(String msg) {

System.out.println("打印机告诉我的消息是 ---> " + msg);

}

};

System.out.println("需要打印的内容是 ---> " + "打印一份简历");

people.goToPrintASyn(callback, "打印一份简历");

System.out.println("我在等待 打印机 给我反馈");

}

}

7230ee51fa32e423ac537994a0b54b13.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值