本文参考文章Java回调机制解读
1. 回调概念
回调,简要概括为:A类的a方法调用B类的b方法,b方法执行完成后,B类主动调用A类的callback方法,将执行结果告知A类。A类为调用方,B类为被调用方,被调用方主动将结果告知调用方的过程,称为回调。
2. 一般例子(无回调机制)
先看一个没有使用回调的例子,老师向学生提出问题,学生解答,老师不去处理学生解答结果。
2.1 学生类(被调用方)
Student.java代码如下
public class Student {
public void resolveProblem() {
try {
Thread.sleep(2000); // 模拟解答过程所耗费的时间
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("student worked out.");
}
}
2.2 老师类(调用方)
Teacher.java代码如下:
public class Teacher{
private Student student;
public Teacher(Student student) {
this.student = student;
}
public void askProblem() {
new Thread() {
public void run() {
student.resolveProblem();
}
}.start();
System.out.println("teacher already asked the student.");
}
}
2.3 测试类
Test1.java代码如下:
public class Test1 {
public static void main(String[] args) {
Student stupid = new Student();
Teacher Tony = new Teacher(stupid);
Tony.askProblem();
}
}
运行结果如下:
teacher already asked the student.
student worked out.(2s后打印结果)
可以看到,tony老师问学生stupid问题后,没有管学生怎么解答问题,就做自己的事情(用打印一句话来模拟)。
3. 回调例子
在一般例子中,如果学生得到结果后,试图将结果告知给老师,则可以采用回调机制来实现。
(未完成)