为什么okhttp3连接池使用Int.MAX_VALUE作为maximumPoolSize?

Why does okhttp3 connection pool use Int.MAX_VALUE as maximumPoolSize?

当执行大量请求时,会创建大量线程来维持空闲连接,这些线程会处于TIMED_WAITING状态五分钟。

最新版本存在以下源码:

class RealBackend(threadFactory: ThreadFactory) : Backend {
  private val executor = ThreadPoolExecutor(
      0, // corePoolSize.
      Int.MAX_VALUE, // maximumPoolSize.
      60L, TimeUnit.SECONDS, // keepAliveTime.
      SynchronousQueue(),
      threadFactory
  )
}

来自okhttp/TaskRunner.kt at master · square/okhttp · GitHub

连接池源代码:okhttp/ConnectionPool.kt at master · square/okhttp · GitHub

GitHub 存储库问题中的类似反馈:

为什么不使用较低的值来限制线程的峰值数?线程数太高可能会导致问题。

OkHttp限制了自己的资源使用限制,这里没有。相反,Dispatcher 限制并发调用的数量,ConnectionPool 限制活动连接的数量。