回调

模块的调用

回调

是一种双向的调用模式,即被调用的接口被调用时,也会调用对方的接口,eg:A调用B的某个方法,B执行完后又调用A的某个方法。

⑴调的用途:

一般用于层间协作,上层将函数安装在下层,下层在一定的条件下出发回调,例如作为一个驱动,是一个底层,他在收到一个数据时,除了完成本层的处理工作外,还将进行回调,将这个数据交给上层应用层来做进一步处理,这在分层的数据通信中很普遍。

⑵Java中的回调

C/C++中的回调,被调用函数要告诉调用者自己的指针地址。Java中没有指针,所以不能传递方法的地址,则采用接口回调的方式来实现:把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被调用类实现的接口的方法。

原理:首先创建一个回调对象,然后再创建一个控制器对象,将回调对象需要被调用的方法告诉控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,自动调用回调对象的方法。

package com.dong.TestSynchronized;
​
public class CallbackTest {
    public static void main(String[] args) {
        manager m = new manager();
        m.distribute();
    }
}
//员工,也就是控制器,也可以不用接口,直接写类
interface Staff{
    void StartWork();
}
//员工执行方法
class StaffA implements Staff{
    //将回调类赋值给全局变量,实现引用
    Back b = new backImp();
    @Override
    public void StartWork() {
        System.out.println("员工开始工作");
        //进行回调
        b.callback();   
    }
}
//回到接口
interface Back{
    void callback();
}
//回调接口的实现类
class backImp implements Back{
​
    @Override
    public void callback() {
        System.out.println("活干完了,打电话通知老板");
    }
    
}
class manager {
    Staff staff = new StaffA();
    public void distribute() {
        staff.StartWork();
    }
}

提示:

模块调用的其他方式:

同步调用|异步调用

操作系统中的线程同步,方法同步,都涉及同步的概念,同步即按照顺序的访问资源,对于同步调用,则也是按照顺序的调用方法,等待被调用的方法执行完毕后,在执行本地方法中未完成的部分。

对于异步操作,也是同理,在线程的异步调用中,线程不需要等待,而是让别的线程去执行,只需返回结果,在这个过程中,调用线程可以去做别的事情,异步方法,异步调用也是同样的道理,无需等待。

 

如有问题,敬请指出,谢谢,与君共勉

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值