• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > 详解Java回调的原理与实现

详解Java回调的原理与实现

作者:关玮琳linSir 字体:[增加 减小] 来源:互联网 时间:2017-05-28

关玮琳linSir 通过本文主要向大家介绍了回调函数详解,java 接口回调原理,java回调函数,java回调,java回调函数例子等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

回调

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

同步回调

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

异步回调

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

具体代码:

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

Callback.java

public interface Callback {
  void printFinished(String msg);
}
</div>

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("打印完成");
  }
}
</div>

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();
  }
}
</div>

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

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

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解Java回调的原理与实现

相关文章

  • 2017-05-28Java数据结构之图(动力节点Java学院整理)
  • 2017-05-28Java咖啡馆(1)——叹咖啡
  • 2017-05-28Java异常继承结构解析_动力节点Java学院整理
  • 2017-05-28java获取redis日志信息与动态监控信息的方法
  • 2017-05-28Kotlin教程之基本数据类型
  • 2017-05-28Java Scaner类详解_动力节点Java学院整理
  • 2017-05-28Java中多线程同步类 CountDownLatch
  • 2017-05-28Java实现监控多个线程状态的简单实例
  • 2017-05-28J2SE 1.5版本的新特性一览
  • 2017-05-28浅析Java 数据结构常用接口与类

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 浅析java中next与nextLine用法对比
    • Java微信二次开发(一) Java微信请求验证功能
    • 详解Spring boot+CXF开发WebService Demo
    • spring的几个重要类和接口(详解)
    • Spring整合Redis完整实例代码
    • Java线程安全问题小结_动力节点Java学院整理
    • springboot注入servlet的方法
    • Eclipse 开发java 出现Failed to create the Java Virtual Machine错误解决办法
    • JAVA面试题之Forward与Redirect的区别详解
    • 数据库阿里连接池 druid配置详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有