java 异步回调,老师学生问题

程序功能:
1。 老师让学生跑步
2。然后老师做其他事情
3。学生跑完回来告诉了老师
4。老师 最后回应了同学

//学生给老师的交流窗口
public interface Callback {
    void returnDate(String result);
}
public class Student {
    /**
     * 
     * @param callback  就是返回给老师结果的一个通道
     * @param instruction  老师说的指令
     */
    public void deal(Callback callback,String instruction) {

        /**
         * 这个线程的作用就是让返回结果迟5s再返回,不然结果输出不明显
         */
        new Thread(new Runnable() {
            @Override
            public void run() {
                 try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                callback.returnDate("同学们说:跑完了...");
            }
        }).start();
    }


}
public class TyTeacher implements Callback {

    private Student teacherWindow;   //有个指导学生的窗口

    TyTeacher(Student student){//获得学生对象
        this.teacherWindow = student;
    }

    /**
     * 
     * @param question  老师的命令
     * 这个线程 的作用就是开辟新线程,让学生执行命令,然后主线程是老师做其他事情。
     */
    public void ask(String instruction) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                teacherWindow.deal(TyTeacher.this, instruction);
            }
        }).start();
    }


    @Override
    public void returnDate(String result) {
        // TODO Auto-generated method stub
        System.out.println(result);
        System.out.println("老师说:我烟也抽完了");
    }



    public static void main(String[]args) {

        TyTeacher tyTeacher = new TyTeacher(new Student());   //实例老师对象,初始化学生窗口

        System.out.println("老师说:跑个一千米了,5s跑完");

        tyTeacher.ask("老师说:你去跑个");//老师调用指令

        System.out.println("老师说:我抽支烟");


    }
}

猜你喜欢

转载自blog.csdn.net/qq_38340601/article/details/81705558
今日推荐