Java的回调机制模块之间总是存在着一定的接口,从调用方式上来看,可以分为三类:同步调用、回调和异步调用。同步调用时一种阻塞式调用,也是我们在写程序时经常使用的;回调时一种双向的调用模式,也就是说被调用的接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,解决了同步阻塞问题,举例来说:A通知B后,它们各走各的互不影响,不想同步调用那种,A通知B后,非等到B走完后,A才继续走。回调时异步的基本。那回调机制为什么会出现呢?在我们现实生活中,有如下这样场景:有一位老板很忙,他没有时间盯着员工干活,然后他告诉自己的雇员,干完当前这些事情后,告诉他干活的结果。这个例子其实是一个回调+异步的例子,再举一个例子,A程序员写了一段程序a,其中预留了回调函数接口,并封装好了该程序,程序员B让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法,到这里你可能似懂非懂了,后面会继续说明回调的出现原因。接下来我们把上面例子变成代码,看到网上很多人最后搞混了异步和回调,因此例子中不加入异步调用。(注意:回调可不是解决什么调用时间过长问题,那是异步!)首先创建一个回调接口,老板的告知干活完如何找到他的方式,留下老板的办公室地址:.callback;/***此接口为联系的方式,不论是电话号码还是联系地址,作为老板都必须要实现此接口****@authorAdministrator**/publicinterfaceCallBackInterface{publicvoidexecute();}.callback;/***创建回调对象,就是老板本人**老板是作为上层应用设分出现的,下层应用(员工)是不知道有哪些方法,因此他想被下层应用(员工)*调用必须实现接口****@authorAdministrator**/lassBossimplementsCallBackInterface{ ***@Override publicvoidexecute(){ //TODOAuto-generatedmethodstub ("收到了!!"+()); }}.callback;/***员工类,必须记住,这是一个底层类,底层是不了解上层服务的****@authorAdministrator**/lassEmployee{ privateCallBackInterfacecallBack=null;//告诉老板的联系方式,也就是注册publicvoidsetCallBack(CallBackInterfacecallBack){ =callBack;}//工人干活publicvoiddoSome(){ // for(inti=0;i<10;i++){ ("第【"+i+"】事情干完了!"); } // (); }}.callback;lassClient{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub Employeeemp=newEmployee(); //将回调对象(上层对象)传入,注册 emp
爪哇不眠夜 来自淘豆网m.daumloan.com转载请标明出处.