java使用回调函数

java回调函数

回调函数(callback Function),顾名思义就是用来回调的函数。在两个类A、B中,A在调用B接口的同时B也在调用A

回调函数也常用于线程中的异步获取消息。

举个简单的例子,公司中老板分发任务给员工A,让A完成任务一段时间后回复老板,而老板总不能等待A完成任务,期间老板可能还要做其他重要的事情,所以A就可以通过回调通知老板任务完成了

代码例子

1.定义回调接口,内置一个员工回复老板的函数

public interface MyCallback {
	 public void callback(String massage);
}

2.Boss类,实现回调接口,让员工任务完成后知道要回复的对象

package callback;

public class Boss implements MyCallback{
    //老板姓名
    private String name = "";
    //分配任务的员工对象
    Employee employee = null;
    public Boss(String name,Employee employee){
        this.name = name;
        this.employee = employee;
    }
	//分配任务
    public void schedule(){
        //this指当前Boss类的对象
        employee.work(this,"打电话给技术部小李-"+name);
}
	//实现接收员工回复的函数
    @Override
    public void callback(String massage) {
        System.out.println(name+"收到员工"+employee.getName()+"回复:"+massage+"  ");
    }
}

3.Employee类

package callback;

public class Employee {
    //员工姓名
    private String name = "";
    public Employee(String name){
        this.name = name;
    }
    //接收老板安排的任务
    public void work(MyCallback callback,String myWork){
        System.out.println("员工"+name+"收到工作消息,工作是:"+myWork);
		//创建并开启线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    //休眠1s
                    Thread.sleep(1000);
                    //回复老板任务完成情况
                    callback.callback("回复老板工作做完了");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
    public String getName() {
        return name;
    }
}

4.测试类

public class Test {
    public static void main(String[] args) {
        Boss boss = new Boss("王老板",new Employee("铁蛋"));
        //王老板给员工铁蛋布置任务
        boss.schedule();
        Boss boss1 = new Boss("黎老板",new Employee("狗蛋"));
        //黎老板给员工狗蛋布置任务
        boss1.schedule();
    }
}

5.结果
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值