【问题标题】:OkHttp thread priority background on AndroidAndroid上的OkHttp线程优先级背景
【发布时间】:2016-02-24 08:42:02
【问题描述】:
在Android上建议将线程优先级设置为THREAD_PRIORITY_BACKGROUND,以避免其他线程干扰主线程。
OkHttp 使用多个线程池(调度程序、连接池等),但我看到它不担心线程优先级。例如,NetworkDispatcher#84 中的 Google Volley 库使用 THREAD_PRIORITY_BACKGROUND
OkHttp 是否有理由不设置线程优先级?在 Android 上使用它时,我应该将线程工厂替换为将线程优先级设置为后台的线程工厂吗?
【问题讨论】:
标签:
android
multithreading
okhttp
okhttp3
【解决方案1】:
您可以使用为执行程序服务提供的 API 等将线程优先级设置为您喜欢的任何内容。
在大多数情况下,OkHttp 不使用 CPU,而且当它使用时,我通常不希望它处于低优先级。 OkHttp 花费其初始 CPU 周期准备发送您的网络请求。我喜欢尽可能紧急地启动网络 I/O,因为这样可以尽可能紧急地回复您。一旦请求离开,OkHttp 就不会使用 CPU。它只是阻塞,静静地等待网络响应。最后,当它返回时,我想紧急将其返回给调用者。
TL;DR:您可以帮助自己调整线程优先级,但这不会有太大区别,因为 OkHttp 不使用 CPU 太多,而且当它确实使用 CPU 时,我认为通常是一个好主意I/O 尽快启动。