关于java 回调函数的理解

下面的例子:

某天,我打电话向你请教问题,当然是个难题,:),你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了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
终于知道结果了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java回调函数是一种在Java中实现事件驱动编程的重要机制。回调函数允许您将一个函数作为参数传递给其他函数,并在需要时调用它。回调函数Java中实现事件驱动编程的重要工具,可以用于处理各种事件,如用户交互、定时器触发、数据读取等。 在Java中,回调函数通常使用接口来实现。接口是一种定义了一组方法的抽象类型,这些方法在实现时可以由任何类来实现。回调函数通常通过实现接口中的方法来实现,并在需要时调用这些方法。 下面是一个简单的回调函数示例: ```java interface Callback { void call(); } public class MyClass { private Callback callback; public void doSomething(Callback callback) { this.callback = callback; // 做一些事情 if (callback != null) { callback.call(); } } } ``` 在上面的示例中,`Callback` 接口定义了一个名为 `call()` 的方法,用于在适当的时候被调用。`MyClass` 类将 `Callback` 接口的实现作为参数传递给 `doSomething()` 方法,并在完成后调用 `call()` 方法。 当您需要使用回调函数时,您可以将一个实现了回调接口的类的实例传递给需要使用回调的方法。该方法将在适当的时候调用回调方法,并将结果传递给该实例的方法或属性。这样,您就可以根据需要执行其他操作或处理回调结果。 使用回调函数可以简化代码并提高代码的可维护性,因为它允许您将复杂的事件处理逻辑封装在单独的方法中,并使用回调函数将其与主程序分离。这使得代码更加清晰和易于理解,并且可以在需要时轻松地扩展和修改代码。 需要注意的是,使用回调函数时需要注意线程安全问题。由于回调函数通常是在其他线程中执行的,因此需要确保在调用回调方法时正确地同步和保护数据,以避免出现并发问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值