okhttp-了解一些特性

特性简介

  1. 支持请求克隆
  2. 支持请求取消
  3. 支持同步/异步请求
  4. 支持请求限流

同步/异步

同步请求
  1. 调用RealCall的execute方法
异步请求
  1. 传入回调对象Callback,封装到AysncCall中,AysncCall实现了Runnable接口
  2. 执行AysncCall-execute方法,执行成功调用onSucess回调函数,执行失败调用onFailure回调函数
  3. 单个任务执行完成后在finally块中轮询存储队列中是否有未执行的请求,如果有且满足并发执行条件,则将该请求任务放入线程池中执行
异步请求线程池模型
  1. 采用SynchronousQueue阻塞队列模型
  2. 线程保活时间60秒
请求限流
  1. 异步请求下单个host容许的并发数为5
问题思考
  1. 异步请求下向同一个host发起大量请求会有什么问题?
    大量请求进来,会将暂时不能执行的请求任务放到Deque readyAsyncCalls队列中,无界队列,因此不会
  2. 异步请求下执行finally块轮询时,会遍历readyAsyncCalls队列,会有安全问题么?
    1.readyAsyncCalls队列模型是非线程安全的
    2.遍历时进行了sychronized保护,因此不会有安全问题

请求重试

  1. 不同方式发起的请求重试次数不同,谷歌21次、火狐/curl/wget20次、safari16次、http1.0 5次

请求撤销

  1. 撤销方法中会调用套接字的close方法,关闭连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值