【发布时间】:2016-04-15 10:50:15
【问题描述】:
我正在使用 android 中的 Volley 库进行 Http 通信。默认情况下,volley 库保留 4 个线程,它们从 BlockingQueue 获取 http 'Request' 对象(请求对象包含用于发出 http 请求的所有详细信息,如 url、http 方法、要发布的数据等)并同时发出 http 请求。当我分析我的应用程序需求时,只有不到 10% 的时间我会同时使用所有 4 个线程,而其余时间我将使用该线程池中的 1 或 2 个线程。所以实际上 2 到 3 个线程几乎 90% 的时间都处于 wait() 模式。
所以这是我的问题, 1) 处于 wait() 模式的线程的开销是多少,它是否消耗大量的 cpu 周期?让所有这些线程等待对我来说是个好主意吗?
我假设由于等待线程将在一个循环左右(内部实现)中不断检查监视器/锁定以唤醒,它可能会消耗相当多的 cpu 周期来维持等待线程。如果我错了,请纠正我。
谢谢。
【问题讨论】:
-
它根本不消耗任何 CPU 周期,而且 2-3 并不是“所有这些”,它是一个非常小的数字。您对轮询的假设不正确。
-
谢谢。只是想更深入地了解 Threads 的内部实现。如果您能推荐任何文章,那就太好了?而且我认为我滥用了 polling 这个词。我的意思是检查一个监视器/锁定一个循环左右。
标签: java android multithreading threadpool android-volley