1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,jsPwwCe它是一种单向调用

2:回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;

3:异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口

具体说来:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,

实例1:使用java中Timer来在给定时间间隔发送通知,每隔十秒打印一次数据

TimePrinter 实现ActionListener接口,该接口中的actionPerformed方法就是回调函数

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Date;

/**

*TimePrinter实现回调函数接口

*/

public class TimePrinter implements ActionListener {

@Override

public void actionPerformed(ActionEvent event) {

// TODO Auto-generated method stub

Date now=new Date();

System.out.println("Now time is "+now);

Thttp://www.cppcns.comoolkit.getDefaultToolkit().beep();

}

}

测试端

import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import javax.swing.Timer;

public class TimerTest {

public static void main(String[] args) {

// TODO Auto-generated method stuhttp://www.cppcns.comb

ActionListener listener=new TimePrinter();

Timer timer=new Timer(10000, listener);

timer.start();

JOptionPane.showMessageDialog(null, "quit");

System.exit(0);

}

}

运行结果:每隔10s打印,运行程序后需要耐心等待。

Now time is Fri Apr 15 22:31:53 CST 2016

Now time is Fri Apr 15 22:32:03 CST 2016

Now time is Fri Apr 15 22:32:13 CST 2016

从结果发现Ti

实例2:老师平时学生布置任务后不可能一直等待和监督学生完成,老师通常会告诉学生,任务完成后给他打个电话或者发个信息,那么学生给老师返回结果的过程需要老师信息,这就是一个回调的过程。

public interface Callback {

public void taskResult(String name);

}

/**

* 学生必须指导老师的信息,才能回报任务情况,因此它必须实现回调接口

*

*/

public class Teacher implements Callback{

@Override

public void taskResult(String name) {

// TODO Auto-generated method stub

System.out.println("任务:"+name+"完成");

}

}

public class Student {

Callback callback=null;

//将老师的联系信息给学生

public void setCallback(Callback callback)

{

this.callback=callback;

}

public void doTask()

{

for(int m=1;m<6;m++)

{

callback.taskResult(m+"是张三");

}

}

}

测试端:

public class CallbackTest {

public static void main(String[] args) {

// TODO Auto-generated method stub

Student student=new Student();

student.setCallback(new Teacher());

student.doTask();

}

}

运行结果:

任务:1是张三完成

任务:2是张三完成

任编程客栈务:3是张三完成

任务:4是张三完成

任务:5是张三完成

以上所述是小编给大家介绍的java 三种调用机制(同步、回调、异步)详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

本文标题: 详解java 三种调用机制(同步、回调、异步)

本文地址: http://www.cppcns.com/ruanjian/java/255696.html

java同步异步调用_详解java 三种调用机制(同步、回调、异步)相关推荐

  1. java 配置文件的路径_详解java配置文件的路径问题

    详解java配置文件的路径问题 详解java配置文件的路径问题 各种语言都有自己所支持的配置文件,配置文件中有很多变量是经常改变的.不将程序中的各种变量写死,这样能更方便地脱离程序本身去修改相关变量设 ...

  2. java使用集合存储过程_详解java调用存储过程并封装成map

    详解java调用存储过程并封装成map 发布于 2020-5-1| 复制链接 摘记: 详解java调用存储过程并封装成map           本文代码中注释写的比较清楚不在单独说明,希望能帮助到大 ...

  3. java 死锁 内存消耗_详解Java中synchronized关键字的死锁和内存占用问题

    先看一段synchronized 的详解: synchronized 是 java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并 ...

  4. java 线程一直运行状态_详解JAVA 线程-线程的状态有哪些?它是如何工作的?

    线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在. 一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源.更加轻量化,也因 ...

  5. java注解 源码_详解Java注解教程及自定义注解

    详解Java注解教程及自定义注解 更新时间:2016-02-26 11:47:06   作者:佚名   我要评论(0) Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个 ...

  6. java的自动装箱_详解Java 自动装箱与拆箱的实现原理

    详解Java 自动装箱与拆箱的实现原理 发布于 2020-7-4| 复制链接 本篇文章主要介绍了详解Java 自动装箱与拆箱的实现原理,小妖觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小妖 ...

  7. java的注解方式_详解Java注解的实现与使用方法

    详解Java注解的实现与使用方法 Java注解是java5版本发布的,其作用就是节省配置文件,增强代码可读性.在如今各种框架及开发中非常常见,特此说明一下. 如何创建一个注解 每一个自定义的注解都由四 ...

  8. java集合for循环_详解Java中list,set,map的遍历与增强for循环

    详解Java中list,set,map的遍历与增强for循环 Java集合类可分为三大块,分别是从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型集合. 关于增强for ...

  9. java访问本地文件_详解Java读取本地文件并显示在JSP文件中

    详解Java读取本地文件并显示在JSP文件中 当我们初学IMG标签时,我们知道通过设置img标签的src属性,能够在页面中显示想要展示的图片.其中src的值,可以是磁盘目录上的绝对,也可以是项目下的相 ...

最新文章

  1. 来自一名程序员的表白
  2. Jquery 【select 通过value来寻找对应的项name】
  3. linux安装软件的几种方法
  4. ParameterizedTypeImpl
  5. 王道操作系统考研笔记——1.1.6 系统调用
  6. python状态码409_HTTP状态码
  7. ruby 发送post请求_使用Ruby发送电子邮件
  8. wince6-Error: failed PB timebomb check
  9. input reset 重置时间
  10. python设置环境变量_小白Python进行中
  11. 思维导图是如何做会议记录的
  12. 步进电机、伺服电机、舵机的原理和区别?
  13. 层次分析法在matlab上的实现
  14. 百度大脑推出智能招聘解决方案,助力节省招聘成本
  15. 如何使用花生壳5设置HTTPS映射
  16. iOS adhoc 版本App 如何制作安装
  17. AOJ 15951 零件加工问题二
  18. 学习笔记之在eclipse中,使用ADT开发
  19. 《线性代数应该这样学》读书笔记
  20. 最全的脱壳,反编译 ,汇编工具

热门文章

  1. 3层、5层、3层一个卷积核BP神经网络性能比较
  2. CUDA,C++,Java,Python,Fortran运行速度比较
  3. 亚马逊 AWS 免费云服务操作流程
  4. 网站服务器的解决方案有,Web网站服务器DDOS攻击的解决方案
  5. 弹性均质圆环法计算过程_蚝油的加工工艺,蚝油总固形物(水分含量)计算公式,检测方法...
  6. 苹果ipa签名工具免越狱下载_苹果iphone免越狱使用iTunes 一键下载旧版本app
  7. 【Paper】2012_Design of high performance multimedia control system for UAV/UGV based on SoC/FPGA Core
  8. 研究生的早期科研之路
  9. DFTug - Architecture Your Test Design
  10. ubuntu18.04安装VCS+verdi错误集锦