原文地址:http://www.bysocket.com/?p=636
http://blog.csdn.net/xiaanming/article/details/8703708
回调 :
1、定义一个接口,里面写入方法用于从线程中获取返回信息
2、开启一个线程,将任务给Employee,在Employee中有一个方法含有两个参数
Ⅰ、实现了该接口的实例, Ⅱ、任务 Boss-->Employee(携带boss给employee的任务)
3、在Employee中通过方法参数传入的实例调用回调方法将信息返还给Boss
Employee-->Boss(返回任务完成的结果)
输出结果: boss发布的任务是: 这批文件处理一下
任务是否完成:successful
代码:
package d;
import java.util.concurrent.TimeUnit;
/**
* 回调 :
* 1、定义一个接口,里面写入方法用于从线程中获取返回信息
* 2、开启一个线程,将任务给Employee,在Employee中有一个方法含有两个参数
* Ⅰ、实现了该接口的实例, Ⅱ、任务 Boss-->Employee(携带boss给employee的任务)
* 3、在Employee中通过方法参数传入的实例调用回调方法将信息返还给Boss
* Employee-->Boss(返回任务完成的结果)
*
* 输出结果: boss发布的任务是: 这批文件处理一下
任务是否完成:successful
*
* @author he
*
*/
// 用于回调的接口
interface callBack {
// 该方法用于回调
public void back(String msg);
}
class Boss implements callBack {
private Employee employee;
public Boss(Employee employee) {
this.employee = employee;
}
// 向employee发送任务
public void sendTask(final String task) {
new Thread(new Runnable() {
public void run() {
// employee从boss手中获取任务
employee.getTask(Boss.this, task);
}
}).start();
}
// 获取employee完成的结果
public void back(String msg) {
System.out.println("任务是否完成:" + msg);
}
}
class Employee {
// 从上一层获取任务 ,即 从boss获取要执行的任务
public void getTask(callBack boss, String task) {
System.out.println("boss发布的任务是: " + task);
try {
// 模拟完成任务所需要的时间
TimeUnit.MILLISECONDS.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 将结果返回给boss
boss.back("successful");
}
}
public class Test {
public static void main(String[] args) {
Employee employee = new Employee();
Boss boss = new Boss(employee);
boss.sendTask("这批文件处理一下");
}
}