Выбор ответа Junior Сеть: Retrofit и OkHttp обновлено

Один OkHttpClient на приложение

Вопрос

Почему OkHttpClient создают один раз на приложение, а не на каждый запрос?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Клиент держит пул соединений и потоков, новый на запрос их теряет. У OkHttpClient пул соединений (keep-alive, HTTP/2 мультиплексирование), диспетчер с пулом потоков и кеш.

Варианты ответа

  1. Так требует лицензия OkHttp: один клиент на процесс приложения
  2. Клиент держит пул соединений и потоков, новый на запрос их теряетправильный ответ
  3. Второй созданный клиент перестанет работать, пока жив первый
  4. Иначе не будет работать HTTPS: сертификаты грузятся один раз

Разбор

У OkHttpClient пул соединений (keep-alive, HTTP/2 мультиплексирование), диспетчер с пулом потоков и кеш. Новый клиент на каждый запрос заново открывает TCP и TLS и плодит потоки. Если нужны другие настройки, client.newBuilder() создаёт вариант, разделяющий пул. Лицензия и HTTPS тут ни при чём.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.