Java回调函数异步回调案例
1、回调函数分类
回调函数区分:同步回调和异步回调
同步回调:意义只在于完成方法调用;
异步调用:可实现并发,主业务线程可以及时释放;异步线程完成工作,执行回调函数,完成善后工作;提高了执行效率。
2、代码示例
1、注测试类
package com.callback2;public class AsyncCallBack {public static void main(String[] args) {System.out.println("业务主线程开始ID:" + Thread.currentThread().getId());System.out.println("------------------");Son son = new Son();Mother mother = new Mother(son);mother.notice();son.writeHomeWork();System.out.println("业务主线程结束ID:" + Thread.currentThread().getId()+"\n");}}
2、母亲
package com.callback2;public class Mother {private Son son;public Mother(Son son) {this.son = son;}public void notice() {new Thread(new Runnable() {@Overridepublic void run() {System.out.println("通知母亲线程ID:" + Thread.currentThread().getId());cookFood("面包");}}).start();}public void cookFood(String bread) {System.out.println("目前做饭线程ID:" + Thread.currentThread().getId());try {System.out.println("母亲烤制" + bread + "中...");Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("母亲烤好了面包");String message = "小明,来吃饭了!";son.callback(message);}}
3、儿子小明
package com.callback2;public class Son {private String status = "";public void writeHomeWork() {System.out.println("小明写作业线程ID:" + Thread.currentThread().getId());System.err.println("小明写作业中...");setStatus("写作业中");}public void callback(String message) {System.out.println("回调小明吃饭线程ID:" + Thread.currentThread().getId());System.err.println(message);System.err.println("好的,马上来!");System.out.println("小明开始吃饭!");setStatus("吃饭中");System.out.println("小明执行吃饭线程ID:" + Thread.currentThread().getId());}public String getStatus() {return status;}public void setStatus(String status) {this.status = status;}
}
4、执行结果
业务主线程开始ID:1
------------------
小明写作业线程ID:1
小明写作业中...
业务主线程结束ID:1通知母亲线程ID:12
目前做饭线程ID:12
母亲烤制面包中...
母亲烤好了面包
回调小明吃饭线程ID:12
小明,来吃饭了!
好的,马上来!
小明开始吃饭!
小明执行吃饭线程ID:12
5、结果分析
1) 小明使用主线程写作业(写完写不完,不需要关心);
2) 母亲使用新线程做饭【并发】,母亲做完饭,执行回调函数,通知小明吃饭;
3) 小明使用新线程,开始吃饭。
Java回调函数异步回调案例相关推荐
- java回调函数_PHP回调函数及匿名函数概念与用法详解
1.回调函数 PHP的回调函数其实和C.Java等语言的回调函数的作用是一模一样的,都是在主线程执行的过程中,突然跳去执行设置的回调函数: 回调函数执行完毕之后,再回到主线程处理接下来的流程 而在ph ...
- java 自定义函数的调用_Java/Android中的函数调用回调函数自定义回调函数
在做Android自定义控件时遇到要自定义回调函数的问题,想想自己还暂时没有那么精深的技术,赶紧返过头回来再重新研究Java中回调函数的问题.然而不幸的是,网上太多杂乱的帖子和博客都是转来转去,而且都 ...
- 关于js的回调函数,同步回调与异步回调
回调定义 刚开始学习javascript时,对回调函数的理解仅仅停留在知道定义阶段.什么是回调函数? 就是将一个函数作为参数传递给另一个函数,作为参数的这个函数就是回调函数. 至于为什么要用到回调函数 ...
- 回调函数 同步回调 异步回调
回调函数 回调函数一般是在封装接口的时候,回调显得特别重要,我们首先假设有两个程序员在写代码,A程序员写底层驱动接口,B程序员写上层应用程序,然而此时底层驱动接口A有一个数据d需要传输给B,此时有两种 ...
- 回调函数中有回调函数吗_嗨,那里有回调!
回调函数中有回调函数吗 因为是我的书包,所以我喜欢JavaScript . 实际上,我已经开始喜欢JavaScritp的面向异步回调的编程风格 . 因此,当我发现自己处于非JavaScript环境中时 ...
- 回调函数与回调地狱及其解决方法 | JavaScript
JavaScript中的回调函数与回调地狱及其解决方法 以下为整理的思维导图 图片版+文字版 文末附有参考文章链接 知识点思维导图版 一.什么是回调函数 1.MDN的定义 回调函数是作为参数传给另一个 ...
- C++屌屌的观察者模式-同步回调和异步回调
目录 一.概述 1.同步观察者 2.异步观察者 二.效果展示 三.同步观察者 四.异步观察者 五.相关文章 原文链接:C++屌屌的观察者模式-同步回调和异步回调 一.概述 说起观察者模式,也是比较简单 ...
- 什么是回调函数?回调函数有什么缺点?如何解决回调地狱问题?
什么是回调函数?回调函数有什么缺点?如何解决回调地狱问题? 参考文章: (1)什么是回调函数?回调函数有什么缺点?如何解决回调地狱问题? (2)https://www.cnblogs.com/kzxi ...
- 怎么理解回调函数? 回调函数合集
网上查了一通,有点体会,特来分享与讨论. ******************************************************************************* ...
最新文章
- DFS:深入优先搜索 POJ-2386 Lake Counting
- Python 画樱花(动态画+飘落效果+暗色效)
- [软件推荐]使用OneNote来构建你自己的知识库(OFFICE2010)
- mysql安装配置yum_在CentOS 7下使用yum配置MySQL源并安装MySQL
- java实现通用查询_通用业务引用查询服务实现
- HAProxy.md
- zkcli远程连接_ZooKeeper客户端 zkCli.sh 节点的增删改查
- 23.2. REPLACE
- C语言项目 ---- 纸牌游戏(详细讲解 + 全部代码 + 运行图片)
- wechart image标签
- hustoj搭建教程
- Java程序员面试分类真题(后附答案解析)
- 如何添加打印机到电脑
- 怎么把笔记本的数据转移到台式机上?
- java里面怎么开根号_新手求解呀!!!!!!!怎么开根号,为嘛我开不了
- 结构化数据,半结构化数据,非结构化数据(区别)
- 计算机编程中的草图,我每天都画草图,你也该试试看
- 使用sql语句往MySQL插入1000万条数据
- Cocos2d-x的多线程与异步加载实现详解
- LJ2200部分软件空白打印问题解决