全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解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("我在等待 打印机 给我反馈");
  }
}

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("我在等待 打印机 给我反馈");
  }
}

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


# java  # 实现回调  # 回调函数实现  # 回调原理  # Java通过匿名类来实现回调函数实例总结  # java 接口回调实例详解  # Java 回调函数详解及使用  # Java回调方法详解  # JAVA微信扫码支付模式二线上支付功能实现以及回调  # Java编程接口回调一般用法代码解析  # 回调  # 有一  # 给我  # 我在  # 做完  # 我就  # 说了  # 什么时候  # 告诉你  # 会在  # 能在  # 很简单  # 等我  # 这个时候  # 就用  # 停下来  # 想做  # 大家分享  # 这两种  # 这里面 


相关文章: 青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Python路径拼接规范_跨平台处理说明【指导】  广平建站公司哪家专业可靠?如何选择?  相册网站制作软件,图片上的网址怎么复制?  如何挑选高效建站主机与优质域名?  定制建站策划方案_专业建站与网站建设方案一站式指南  公司网站设计制作厂家,怎么创建自己的一个网站?  网站网页制作专业公司,怎样制作自己的网页?  网站制作报价单模板图片,小松挖机官方网站报价?  建站之星如何助力企业快速打造五合一网站?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  如何在七牛云存储上搭建网站并设置自定义域名?  如何高效利用亚马逊云主机搭建企业网站?  如何通过虚拟主机快速完成网站搭建?  建站之星在线客服如何快速接入解答?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  定制建站价位费用解析与套餐推荐全攻略  建站之星24小时客服电话如何获取?  重庆市网站制作公司,重庆招聘网站哪个好?  大连网站设计制作招聘信息,大连投诉网站有哪些?  建站主机选购指南:核心配置优化与品牌推荐方案  c# 在高并发下使用反射发射(Reflection.Emit)的性能  如何在Golang中使用replace替换模块_指定本地或远程路径  简单实现Android文件上传  建站之星代理如何优化在线客服效率?  建站之星后台密码遗忘或太弱?如何重置与强化?  学校为何禁止电信移动建设网站?  用v-html解决Vue.js渲染中html标签不被解析的问题  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  长沙企业网站制作哪家好,长沙水业集团官方网站?  学校建站服务器如何选型才能满足性能需求?  大连 网站制作,大连天途有线官网?  如何通过wdcp面板快速创建网站?  建站主机是什么?如何选择适合的建站主机?  如何选择适合PHP云建站的开源框架?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  婚礼视频制作网站,学习*后期制作的网站有哪些?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  创业网站制作流程,创业网站可靠吗?  建站主机如何选?高性价比方案全解析  建站之星如何开启自定义404页面避免用户流失?  太平洋网站制作公司,网络用语太平洋是什么意思?  如何选择高效便捷的WAP商城建站系统?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  建站之星备案是否影响网站上线时间? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。