Volley框架中提供NetworkDispatcher類做爲工做線程(work thread)處理網絡請求,它繼承了Thread。NetworkDispatcher在其run()方法中調用了緩存
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
將網絡請求線程的優先級設置成後臺線程,後臺線程是一個比通常線程優先級低的線程,不過可以最小限度的影響用戶界面響應。
工做線程先從請求網絡隊列networkQueue中讀取Request,而後執行網絡請求,接着解析返回數據,最後判斷數據是否須要緩存,整個過程都在工做線程的run()方法中實現。網絡
Volley框架提供CacheDispatcher類做爲緩存線程來處理請求的緩存,它集成了Thread類,也一樣是後臺線程。CacheDispatcher每次會從緩存隊列cacheQueue中獲取網絡請求,若是緩存中上次網絡請求的返回數據沒有過時,則不執行網絡操做而直接返回給客戶端緩存數據;若是緩存數據過時,則將請求放到網絡隊列networkQueue。框架
RequestQueue類在初始化的時候,會建立一個CacheDispatcher緩存線程和多個NetworkDispatcher網絡線程。每次向隊列RequestQueue添加網絡請求Request的時候,隊列會檢查請求是否有緩存標誌cacheKey,若是沒有改標識則直接將請求放到網絡隊列networkQueue,若是有該標識則將請求放到緩存隊列cacheQueue。spa