为什么要使用OkHttp?(笔记)

连接池

OkHttp实现了连接池的概念,即对于同一主机的多个请求,其实可以公用一个Socket连接,而不是每次发送完HTTP请求就关闭底层的Socket,这样就实现了连接池的概念。

线程池怎么复用

线程池的线程复用:就是任务在并不只执行创建时指定的firstTask第一任务,还会从任务队列的中自己主动取任务执行,而且是有/无时间限定的阻塞等待,保证线程的存活。

DNS

okhttp提供了自定义DNS解析的接口。

OKIO

OkIO增强了流于流之间的互动,使得当数据从一个缓冲区移动到另一个缓冲区时,可以不经过copy能达到。

1 速度快

  • okio采用了segment机制进行内存共享,极大减少copy操作带来的时间消耗,加快了读写速度
  • okio引入ByteString使其在byte[]与String之间转换速度非常快(ByteString内部以两种变量记录了同个数据byte[] data; transient String utf8;),空间换时间

2 稳定

  • okio提供了超时机制,不仅在IO操作上加上超时的判定,包括close,flush之类的方法中都有超时机制

3 内存消耗小

  • 虽然okio在byteString采用空间换时间,但是对内存也做极致优化,总体还是极大提高了性能
  • okio的segement机制进行内存复用,上传大文件时完全不用考虑OOM

 

posted @ 2020-11-30 11:41  zero_7  阅读(622)  评论(0编辑  收藏  举报