package com.zhongmingjun.demo_1;
public class AsynchronousCallDemo_0 {
public static void main(String[] args) {
Employee em=new Employee();
Boss boss=new Boss(em);
boss.assignWorks();
}
}
interface CallBack {
public void succeedHandle(String result);
public void failHandle(String result);
}
// 老板
class Boss implements CallBack {
private Employee em;
public Boss(Employee em) {
this.em = em;
}
@Override
public void succeedHandle(String result) {
System.out.println("succeedHandle : " + result);
}
@Override
public void failHandle(String result) {
System.out.println("failHandle : " + result);
}
public void doOther() {
System.out.println("do other things");
}
public void assignWorks() {
new Thread(new Runnable() {
public void run() {
em.doWork(Boss.this,new String[]{"one","two"});
}
}).start();
;
this.doOther();//分配完任务干别的事情去了
}
}
// 雇员
class Employee {
public void doWork(CallBack callBack, String... things) {
// 模拟做事,此时还可以不干boss分配的任务,可以干完手头的活再干boss分配的也可以,因为调用本身基于异步的,不会阻塞调用者
for (int i = 0; i < things.length; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
callBack.succeedHandle("these things so easy");
}
}
异步调用及回调
最新推荐文章于 2023-07-31 21:08:39 发布