为什么要使用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