我正在使用volley
库来执行网络操作以加快速度。我的问题是Volley是否执行顺序或并行添加到队列中的请求。
假设我添加了Req1,Req2,Req3这样的请求,它们会开始并行运行还是第二次请求会等到第一次完成?
答案 0 :(得分:2)
Volley维护着几个网络线程。如果一个线程没有做任何事情,那么它将占用队列中的一个工作。
要回答您的问题,Req1,Req2和Req3将分别放在工作线程中并且将并行运行。
Volley还会缓存您下载的数据(并根据下载数据的HTTP标头中的过期时间确定是否重新下载),因此如果您的数据不需要再次下载,则会从缓存中获取,这比重新下载要快。
这些是Volley在适合使用它的情况下宣称比标准网络操作更快的一些原因。当然,您可以自己实现这一点,但Google为您做了很多艰苦的工作。
答案 1 :(得分:0)
通常,队列会根据排队的顺序启动每个操作,除非它是优先级队列。
因此,假设优先级相同(假设排球队列是非优先级队列),我们可以得出结论:Req1
将首先获得开始。然后是Req2
,然后是Req3
。
但是,我们可以不保证每个完成的订单。如果Req1
非常耗时,则请求的排序顺序将不同于Req1
,Req2
,Req3
。
我们可以保证的是,它们将按照Req1
,Req2
,Req3
的顺序启动。