栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java的回调

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java的回调

回调的本质:A类a方法调用B类的b方法,b方法再调用A类的c方法。

举个例子:

现在领导要员工A做一件事,给他发布了任务,需要员工A做完后通知再领导。

对于领导来说:发布任务(fabuTask),获得结果(result)

对于员工来说:处理任务(doSomthing),通知领导结果(result)

代码实现:

public interface CallBack {
	void result(String result);
}

领导发布的任务:让员工做事 

public class Manager implements CallBack{

	@Override
	public void result(String result) {
		System.out.println(result);
	}
	
	public void fabuTask(EmployeeInterfce employee) throws InterruptedException {
		System.out.println("领导发布任务");
		employee.doSomthing(new Manager());		
		
	}

}

员工处理事情,需要接收一个CallBack参数,这样才能知道要向谁反馈 

public class Employee implements EmployeeInterfce{
	
	@Override
	public void doSomthing(CallBack callBack) {
		String result = "做完了";
		callBack.result(result);
	}
}
public class Test {

	public static void main(String[] args) throws InterruptedException {
		Employee employee = new Employee();
		Manager manager = new Manager();
		manager.fabuTask(employee);
		System.out.println("领导继续做事");
	}

}

以上就是这一个流程的代码实现,结果:

 看结果可以看的,这是一个同步调用,领导收到反馈的结果后再接着做别的。

那领导手上还有别的事呢,领导发布任务后继续做自己的事,只需要员工做完之后通知就行了,下面改一下代码。

public class Manager implements CallBack{

	@Override
	public void result(String result) {
		System.out.println(result);
	}
	
	public void fabuTask(EmployeeInterfce employee) throws InterruptedException {
		System.out.println("领导发布任务");
		new Thread(new Runnable() {		
			@Override
			public void run() {
				employee.doSomthing(new Manager());	
			}
		}).start();		
	}
}

其他代码不用改,看一下运行结果:

可以看到,领导在发布玩任务后,就不用管员工是否做完就可以接着做自己的事,这种就是异步调用 。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770451.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号