package net.kuisec;
public class Demo {
public static void main(String[] args) {
//创建DelayCall对象来使用回调
DelayCall call = new DelayCall();
System.out.println("接口实现类运行方式启动:");
//使用多态来展现接口灵活性,编译看左边,运行看右边。
CallBack callBack = new InterImp();
//传入数据开始模拟
call.dataProcessing("10086(接口实现类)", callBack);
//换行分隔
System.out.println();
System.out.println("匿名内部类运行方式启动:");
//换行分隔
System.out.println();
//使用多态来得到匿名内部类对象
CallBack callBack2 = new CallBack() {
@Override
public void callBack() {
// TODO Auto-generated method stub
System.out.println("匿名内部类被调用,回调生效");
System.out.println("匿名内部类运行方式结束");
//换行分隔
System.out.println();
}
};
//传入数据开始模拟
call.dataProcessing("10000(匿名内部类)", callBack2);
}
}
class DelayCall{
public void dataProcessing(String data, CallBack callback){
new Thread(new Runnable() {
public void run() {
try {
//模拟子线程耗时数据处理
System.out.println("得到的data:" + data);
System.out.println("耗时处理3秒");
//换行分隔
System.out.println();
Thread.sleep(3000);
System.out.println("耗时处理结束");
//运行结束,回调
callback.callBack();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}
interface CallBack{
void callBack();
}
class InterImp implements CallBack{
@Override
public void callBack() {
// TODO Auto-generated method stub
System.out.println("接口实现类被调用,回调生效");
System.out.println("接口实现类运行方式结束");
//换行分隔
System.out.println();
}
}
希望能帮助到你。



