关于java 回调函数的理解

本文通过一个电话求助场景的示例,介绍了回调模式的基本概念及其实现方式。在该模式下,请求者发起请求后可以继续执行其他任务,而响应者在处理完请求后会主动通知请求者结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面的例子:

某天,我打电话向你请教问题,当然是个难题,:),你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。

package com.bollin1206;


public class Requester {
      
private  CallBack callBack ;
private String phoneNum ;
interface    CallBack{
void askQuestion(String phoneNum);
}
 
public void  getResult(CallBack callBack){
System.out.println("打电话 请教问题");
callBack.askQuestion(phoneNum);
System.out.println("终于知道结果了");
}
 
public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum;
}
public String getPhoneNum() {
return phoneNum;
}


public CallBack getCallBack() {
return callBack;
}


public void setCallBack(CallBack callBack) {
this.callBack = callBack;
}
}

===================================


package com.bollin1206;


import com.bollin1206.Requester.CallBack;


public class Responser {
public static void main(String[] args) {
Requester requester  = new Requester() ;
requester.setPhoneNum("10086");;

requester.getResult(new CallBack() {

@Override
public void askQuestion(String phoneNum) {
// TODO Auto-generated method stub
try {
System.out.println("答案正在计算中,先挂断电话吧!");
Thread.sleep(3000);//模拟耗时操作
result(phoneNum);

} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


private void result(String phoneNum) {
// TODO Auto-generated method stub
System.out.println("获得了计算结果是---->>"+phoneNum);
}
});
}
}


====================

结果,模拟计算耗时3秒 通过线程


打电话 请教问题
答案正在计算中,先挂断电话吧!
获得了计算结果是---->>10086
终于知道结果了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值