时间:2021-05-19
1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用
2:回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;
3:异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口
具体说来:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,
实例1:使用java中Timer来在给定时间间隔发送通知,每隔十秒打印一次数据
TimePrinter 实现ActionListener接口,该接口中的actionPerformed方法就是回调函数
测试端
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 stub 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
从结果发现Timer每隔10s中回调listener中的方法。
实例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 三种调用机制(同步、回调、异步)详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
模块之间总是存在这一定的接口,从调用方式上看,可以分为三类:同步调用、回调和异步调用。下面着重详解回调机制。1.概述Java中的回调机制是一个比较常见的机制,只
5.异步队列Deferred5.1概述异步队列是一个链式对象,增强对回调函数的管理和调用,用于处理异步任务。异步队列有三种状态:初始化(unresolved),
C++中回调函数详解及简单实例回调函数调用关系图对于第一种情况,主程序可以从执行到回调函数,也可以不执行回调函数,关键看宿主函数是否调用了回调函数。对于第二种情
mysql调用获取数据,只能是异步方式返回结果,不能同步获取结果,因此,须在回调函数中编写处理事件。期间看了下Aysnc.js,是用于多个要返回回调函数的事件,
Overriew:onReadyStateChange被回调函数赋值,则能实现异步调用,回调函数直接操作DOM,则能实现局部刷新。那么XMLHttpReques