Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 改进2队列等待大小_Android_Retrofit_Retrofit2 - Fatal编程技术网

Android 改进2队列等待大小

Android 改进2队列等待大小,android,retrofit,retrofit2,Android,Retrofit,Retrofit2,我是翻新2图书馆的新成员,我想知道:排队等候的最大呼叫数是多少 它是否使用了PriorityBlockingQueue,这是一个自增长的队列?这个问题让我想深入了解改型源代码。这是我的结果,这可能不正确,但我想与大家分享。如果你找到更好的答案,请纠正我 代码包含maxRequestsinfo is class,它们使用DequenotPriorityBlockingQueue: public final class Dispatcher { private int maxRequests

我是翻新2图书馆的新成员,我想知道:排队等候的最大呼叫数是多少


它是否使用了PriorityBlockingQueue,这是一个自增长的队列?

这个问题让我想深入了解
改型
源代码。这是我的结果,这可能不正确,但我想与大家分享。如果你找到更好的答案,请纠正我

代码包含
maxRequests
info is class,它们使用
Deque
not
PriorityBlockingQueue

public final class Dispatcher {
    private int maxRequests = 64;
    private int maxRequestsPerHost = 5;
    ....
正如文件所说:

每个调度程序都使用一个
ExecutorService
在内部运行调用。如果您提供自己的执行器,它应该能够同时运行
{@linkplain#getMaxRequests配置的最大}
调用数

也就是说,并发调用的最大数量取决于您的操作:

  • 如果您提供
    ExcutorService
    (通过使用),则可以按函数设置其
    maxRequests
  • 如果不这样做,它将使用默认值its与默认值64并发请求
编辑:

有关您的问题的更多信息等待队列最多可容纳的呼叫数是多少?,您可以在
Dispatcher
类中看到此功能代码:

synchronized void enqueue(AsyncCall call) {
    if (runningAsyncCalls.size() < maxRequests && runningCallsForHost(call) < maxRequestsPerHost) {
      runningAsyncCalls.add(call);
      executorService().execute(call);
    } else {
      readyAsyncCalls.add(call);
    }
  }
synchronized void排队(异步调用){
if(runningAsyncCalls.size()

如果达到
runningAsyncCalls
队列大小
maxRequests
(并发请求),新的
call
将添加到
readyAsyncCalls
,此
队列
没有大小限制,这意味着最大调用值将是
整数。最大值

我稍微改写了您的问题,以使其更清楚,请查看我的更改。您刚刚回答了“有多少并发请求可以同时发生”的问题在网络线程执行之前,队列中不能容纳多少请求。