5分間でjavaコールの方法を理解します。

1708 ワード

一つのシーンがjavaコールの方法を使っているのを見て、興味を持つようになりました。
次の3つの過程を想像してみます。1、先生は学生に質問をしました。2、学生は時間をかけて考えます。3、そして学生は先生に質問を答えます。以上の三つの過程
過程1、先生は学生に質問します。
public class TestCallBack {
    public static void main (String[] args) {
        Student student = new Student();
        Teacher teacher = new Teacher(student);
        System.out.println("main   :       ");
        teacher.askQuestion();
    }
}
過程2、学生は考える時間が必要です。Student類
public class Student{
    public void resolveQuestion(Teacher teacher) {
        try {
            System.out.println("Student   :        ,    6 );
            Thread.sleep(6000);
        } catch (InterruptedException e) {}
        teacher.tellAnswer("   Student        ");
    }
}
過程3、学生は答えを先生に提出します。
public class Teacher{
    private Student student;
    public Teacher (Student student) {
        this.student = student;
    }
    public void askQuestion () {
        student.resolveQuestion(this);
    }
    public void tellAnswer(String str) {
        System.out.println("Teacher   : " + str);
    }
}
メールを実行できます。出力は以下の通りです。
メールの方法で:先生は学生に質問します。
Student対象:学生が考えるには6秒が必要です。
Techer対象:これはStudent類で先生にあげる答えです。
リプを理解するには、ワンスレッドの角度に立って考える必要があります。
1,メインメソッドでnewはstudentとteacherオブジェクトを出して、teacherオブジェクトのaskQuestion方法を呼び出します。
2,teacher対象のaskQuestion方法はまたstudent対象のresoveQuestion方法を呼び出しました。
3、studentの対象の中でreolveQuestionを完成した後に、teacherの対象の中のtellAnswer方法を調べました。
上記のプロセス3は、最も重要なステップのフィードバックを完了しました。全体の流れを簡単に表示します。
teacher.askQuestion->student.reolveQuestion->teacher.tellAnser
AクラスからBクラスまでAクラスに戻るプロセスを実行します。
以上は私のjavaの回調に対する理解で、みんなに対して助けがあることを望みます!