-
if (executed) throw new IllegalStateException(“Already Executed”);
-
executed = true;
-
}
-
client.dispatcher().enqueue(new AsyncCall(responseCallback, forWebSocket));
-
}
同样先置标志位,然后将封装的一个执行体放到异步执行队列中。这里面引入了一个新的类AsyncCall,这个类继承于NamedRunnable,实现了Runnable接口。NamedRunnable可以给当前的线程设置名字,并且用模板方法将线程的执行体放到了execute方法中
2.总体架构
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xODQ1MjUzNi0zNjlmMTZmZDN
mOGE1OTIzLmpwZw?x-oss-process=image/format,png)
上图是OkHttp的总体架构,大致可以分为以下几层:
-
Interface——接口层:接受网络访问请求
-
Protocol——协议层:处理协议逻辑
-
Connection——连接层:管理网络连接,发送新的请求,接收服务器访问
-
Cache——缓存层:管理本地缓存
<