关于回调函数的优势问题

caterpillarous 2016-03-14 08:29:13
学安卓的过程中知道了回调函数这个东西
但是花了好几天也没理解回调函数的好处在哪……
我一开始觉得回调就是可以在单线程的情况下来模拟多线程的情况,提高程序效率
直到我写了这个程序:
interface Hello{
void myPrint(int value);
}
public class CallBackTest implements Hello {
public static void main(String[] args) {
CallBackTest callBackTest = new CallBackTest();
Hi hi = new Hi();
hi.tryToCall(100, callBackTest);
callBackTest.yourPrint(100);
}

@Override
public void myPrint(int value) {
for (int i = 0; i < value; i++) {
for (int j = 0; j < 100000; j++){
//纯粹为了延时
}
System.out.println(i);
}
}

public void yourPrint(int value) {
for (int i = 0; i < value; i++) {
for (int j = 0; j < 100000; j++){
//纯粹为了延时
}
System.out.println(i);
}
}
}
class Hi{
void tryToCall(int value, Hello hi){
hi.myPrint(value);
}
}

假如真的能模拟多线程的话 那么两个print函数应该是交替打印的吧
既然回调的时候主线程还是停住了在等待回调的完成,那么回调函数的意义是什么呢
折腾了好几天也没想明白 求解救。。
...全文
299 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wei220000 2016-03-15
  • 打赏
  • 举报
回复
回调,我理解就是将任何地方产生的结果返回到定义的地方,可以跨一个或多个线程。但是回调只是顺应线程,不是自己建立线程,你的代码对在同一个线程,当然只有顺序执行了
tcmakebest 2016-03-15
  • 打赏
  • 举报
回复
回调的目的我看有两点: 一是功能的模块化,通过传入不同的回调方法,实现功能动态切换 二是流程的需要,方法被调用的时机不可控,只能被动调用.
wei220000 2016-03-15
  • 打赏
  • 举报
回复
跨线程,跨对象的传递数据啊,比如你在UI线程启动一个耗时操作,丢给线程A执行,线程A执行完之后,通过回调,把结果传回UI线程。
caterpillarous 2016-03-15
  • 打赏
  • 举报
回复
引用 1 楼 wei220000 的回复:
回调,我理解就是将任何地方产生的结果返回到定义的地方,可以跨一个或多个线程。但是回调只是顺应线程,不是自己建立线程,你的代码对在同一个线程,当然只有顺序执行了
那回调的好处是什么呢……没做过项目所以想不到什么利用回调可以带来好处的例子
haha_321 2016-03-15
  • 打赏
  • 举报
回复
这个应该可以去理解一下java是面向对象的,也有说是面向抽象的(一般就是借口),一般是为了解耦啊,所以说你完全可以不用接口,直接用一个class去实现,那样的话就会互相依赖的

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧