异步回调的例子如下:
CallBackBody
package add.asyn;
public abstract class CallBackBody {
void onSuccess(Object context){
System.out.println("onSuccess");
}
void onFailure(Object context){
System.out.println("onFailure");
}
abstract void execute(Object context) throws Exception;
}
CallBackTask
package add.asyn;
public class CallBackTask {
private CallBackBody body;
public CallBackTask(CallBackBody body){
this.body = body;
}
protected void start(final Object context){
final Thread t = new Thread(new Runnable(){
@Override
public void run() {
try {
body.execute(context);
} catch (Exception e) {
e.printStackTrace();
body.onFailure(context);
}
body.onSuccess(context);
}
});
t.start();
}
}
CallBackApp
package add.asyn;
public class CallBackApp {
public static void main(String[] args) {
System.out.println("执行异步任务");
final Object context = "上下文信息";
new CallBackTask(new CallBackBody(){
@Override
void execute(Object context) throws Exception {
System.out.println("\n正在执行耗时操作...");
System.out.println(context);
Thread.sleep(5000);
System.out.println("\n执行完成!");
}
}).start(context);
System.out.println("异步执行开始请等待");
}
}