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