java回调

A的a调用B的b,b执行完后会自己调用callback传入答案,实现回调

接口Callback

public interface Callback {
    void tellYourAnswer(String name,int answer);
}

老师-A方

public class Teacher implements Callback {
    private Student student;

    public Teacher(Student student) {
        this.student = student;
    }
                //提问题
    public void makeQuestion() {
        //加个线程-异步回调
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("回答一下,这个问题");
                //学生计算,解答,参数是记录将答案告诉上级
                student.haveQuestion(Teacher.this);
            }
        }).start();
    }

//接口方法,得到学生的解答后执行
    @Override
    public void tellYourAnswer(String name, int answer) {
        System.out.println(name + " 同学,你的回答是 " + answer);
    }
}

学生-抽象成接口

public interface Student {
    void haveQuestion(Callback callback);
}

一个学生-计算

public class Rickey implements Student {
    private String name;

    public Rickey(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void haveQuestion(Callback callback) {
        try{
            Thread.sleep((long) (Math.random()*2));
        }catch (InterruptedException e){
            e.printStackTrace();
        }
         //将答案告诉老师,回调
        callback.tellYourAnswer(this.getName(), (int) (Math.random()*10));
    }
}

测试:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class CallbackTestTest {
    @org.junit.jupiter.api.Test
    public void myTest1() {
        Student rickey1 = new Rickey("r1");
        Student rickey2 = new Rickey("r2");
        Student rickey3 = new Rickey("r3");
        Student rickey4 = new Rickey("r4");
        Student rickey5 = new Rickey("r5");
        List<Student> list = new ArrayList<>();
        list.add(rickey1);
        list.add(rickey2);
        list.add(rickey3);
        list.add(rickey4);
        list.add(rickey5);

        for (Iterator<Student> it = list.iterator(); it.hasNext(); ) {
            Student r = it.next();
            Teacher teacher = new Teacher(r);
            teacher.makeQuestion();
        }

    }

参考博客:

同步调用/异步调用:

https://blog.csdn.net/o15277012330o/article/details/79271385

经典例子,直接概括

https://blog.csdn.net/xiaanming/article/details/8703708

同步调用/异步调用/回调:

https://www.cnblogs.com/xrq730/p/6424471.html

全部评论

相关推荐

03-05 17:03
已编辑
浙江工商大学 C++
陈好好wy:整体看下来有点空空的感觉,可以把每一段项目经历都再完善一下,然后用小标题的形式写个两到三条,目前看有点太简单了,不太能看出具体在这个项目里做了什么工作。还是要尽量把自己做的工作以量化的形式体现在简历上呢。
双非本科求职如何逆袭
点赞 评论 收藏
分享
老板加个卤鸡蛋:HR看了以为来卧底来了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
11876次浏览 105人参与
# 你的实习产出是真实的还是包装的? #
2066次浏览 43人参与
# 巨人网络春招 #
11401次浏览 223人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7731次浏览 43人参与
# 简历第一个项目做什么 #
31821次浏览 344人参与
# 重来一次,我还会选择这个专业吗 #
433658次浏览 3926人参与
# 米连集团26产品管培生项目 #
6235次浏览 216人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187301次浏览 1122人参与
# 牛客AI文生图 #
21466次浏览 238人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152552次浏览 888人参与
# 研究所笔面经互助 #
118989次浏览 577人参与
# 简历中的项目经历要怎么写? #
310536次浏览 4228人参与
# AI时代,哪些岗位最容易被淘汰 #
64080次浏览 837人参与
# 面试紧张时你会有什么表现? #
30531次浏览 188人参与
# 你今年的平均薪资是多少? #
213244次浏览 1039人参与
# 你怎么看待AI面试 #
180316次浏览 1266人参与
# 高学历就一定能找到好工作吗? #
64351次浏览 620人参与
# 你最满意的offer薪资是哪家公司? #
76644次浏览 374人参与
# 我的求职精神状态 #
448232次浏览 3129人参与
# 正在春招的你,也参与了去年秋招吗? #
363696次浏览 2638人参与
# 腾讯音乐求职进展汇总 #
160723次浏览 1112人参与
# 校招笔试 #
471601次浏览 2964人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务