0

在 Android 上建议设置线程优先级,THREAD_PRIORITY_BACKGROUND以避免其他线程干扰主线程。OkHttp 使用多个线程池(调度程序、连接池等),但我看到它不担心线程优先级。例如,NetworkDispatcher#84中的 Google Volley 库使用THREAD_PRIORITY_BACKGROUND

OkHttp 是否有理由不设置线程优先级?在Android上使用它时,我应该用将线程优先级设置为后台的线程工厂替换线程工厂吗?

4

1 回答 1

1

您可以使用为执行程序服务提供的 API 等将线程优先级设置为您喜欢的任何内容。

在大多数情况下,OkHttp 不使用 CPU,当它使用时,我通常不希望它是低优先级。OkHttp 花费其初始 CPU 周期准备发送您的网络请求。我喜欢尽快启动网络 I/O,因为这样可以尽快回复您。一旦请求离开,OkHttp 就不会使用 CPU。它只是阻塞,静静地等待网络响应。最后,当它返回时,我想紧急将其返回给呼叫者。

TL;DR:您可以帮助自己调整线程优先级,但这不会有太大区别,因为 OkHttp 不使用 CPU 太多,而且当它确实使用 CPU 时,我认为获取 I/ 通常是个好主意O 尽快开始。

于 2016-03-25T12:23:44.843 回答