Java回调函数

原创 2016年08月29日 12:51:53

回调函数在网上的讲解比较多,也是nodeJs里比较高级的特性,在Java里的回调函数就是指在服务端的函数可以调用客户端的代码,某百科的定义回调函数是“回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。”
关键就是将函数本身的引用传送到另一个函数,在Java中我们函数的调用是通过引用,所以我们会采用将当前对象本身的引用传递到另一个函数内部去执行。this关键字即是当前对象的引用。
我们可以写个demo,我们模拟server回调client。

class Client {
    Server server = new Server();
    // 2   调用服务
    public void callServer(String params) {
        System.out.println("client start to call server ...");
        sleep(1000);
        // 3 --- this传递当前对象引用
        server.state(this, "params come from client");
    }

    // 6    被回调的函数
    public void backFunction(String params) {
        System.out.println("client called by server ,params : " + params);
    }

    public static void sleep(int millions) {
        try {
            Thread.sleep(millions);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

class Server {

    // 1   模拟server启动
    static {
        System.out.println("server starting...");
        sleep(1000);
        System.out.println("server started...");
    }

    // 4    接收客户端引用
    public void state(Client client, String params) {
        System.out.println("server called by client, params : " + params);
        sleep(1000);
        System.out.println("server will call client...");
//      client.backFunction("server's params");   方式1
        callBack(client);
    }
    // 5   回调函数
    public void callBack(Client client) {
        System.out.println("server call client ...");
        sleep(1000);
        client.backFunction("server call client params");
    }

    public static void sleep(int millis) {
        try {
            Thread.sleep(millis);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
// 测试
        Client client = new Client();
        client.callServer("micro's client");

执行结果:

server starting...
server started...
client start to call server ...
server called by client, params : params come from client
server will call client...
server call client ...
client called by server ,params : server call client params

我们client首先用public void callServer(String params)调用Server,在内部调用server的时候将自身对象用this关键字传递到server,因此server内部也可以通过client.backFunction(“server call client params”);回调到client的函数,backFunction即是被回调的函数,callback称作毁掉函数。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Java回调函数

说起回调函数,必须要了解三个基本的东西:同步调用、回调和异步调用。 我们知道,在组织一个系统的时候我们通常将各个子模块之间预留一些借口以备调用,模块接口之间的调用可以分为上述三种方式:同步调用、回调和...

java 回调函数

下面演示一下java回调函数: 此处需要写3个类  ICallBack、

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

Java回调函数

回调函数的实现步骤 回调函数就是由客户端自己要实现定义函数。(决定权交给了客户端)比如:OnTimer()定时器的回调函数,时间到了,需要做什么,交给客户端自己处理,想添加任何功能都行。 利用回调函...

java回调函数

所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C...

java回调函数

java回调函数回调函数算是看代码是的第一个大障碍吧,以前不理解回调是什么,经常听人家说起回调,心里总在想这是个什么东西,只能说我见过。。嘿嘿,查阅了很多资料也算是明白啦。回调也就是说:A类调用B类的...

java回调函数

在C或者C++中回调函数的定义: 程序在调用一个函数时,将自己的函数的地址作为参数传递给程序调用的函数时(那么这个自己的函数称回调函数) Java中没有指针,不能传递方法的地址,一般采用接...

java回调函数

所谓回调,就是客户程序C调用服务程序S中的某个方法a,然后S又在某个时候反过来调用C中的某个方法b,对于C来说,这个b便叫做回调函数。 一般说来,C不会自己调用b,C提供b的目的就是让S来调用它...

Java 回调函数

在C或者C++中回调函数的定义: 程序在调用一个函数时,将自己的函数的地址作为参数传递给程序调用的函数时(那么这个自己的函数称回调函数) Java中没有指针,不能传递方法的地址,一般采用接...

java回调函数

先举个列子。一天小明遇到个问题,打电话问小红这个问题怎么解决,小红知道问题后发现自己要想一会才能解决这个问题,于是对小明说你先做别的事吧,等会我想出来了再给你回电话。这里面的好处是当小明请教小红问题时...

java 回调函数

Java回调函数(方法) 在C或者C++中回调函数的定义: 程序在调用一个函数时,将自己的函数的地址作为参数传递给程序调用的函数时(那么这个自己的函数称回调函数) Jav...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)