OkHttpClient疑虑之execute()与enqueue()同步与异步请求

       今天试着像鸿洋_一样想封装一下OkHttpClient,但是鸿洋_在封装的源码中却没有开启新线程,难道所有都是在主线程中直接操作,让我好迷惑。于是尝试去Log一下线程,发现execute()直接报错,不能在UI线程执行网络操作。而enqueue()没有报错,Log出来其在线程:OkHttp http://f2.topit.me/2/56/cd/1177415867363cd562l.jpg后面的是请求地址url。没办法,自己看源码也没找出究竟,只好去泡网看看了OkHttp的源码解析http://www.jcodecraeer.co西/anzhuokaifa/androidkaifa/2015/0326/2643.html。分析了一下各个类的作用,找到了对我最重要的东西

Dispatcher.java
Policy on when async requests are executed.

Each dispatcher uses an ExecutorService to run calls internally. If you supply your own executor, it should be able to run configured maximum number of calls concurrently.

原来在执行异步任务的时候开了一个线程池。

这个问题的发生也是自己没有完全理解到同步与异步的含义。

进程同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事.

异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。

而这里是把异步任务放在线程池中。run()得到respond后callback。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值