Выбор ответа Junior Сеть: Retrofit и OkHttp обновлено
Один OkHttpClient на приложение
Вопрос
Почему OkHttpClient создают один раз на приложение, а не на каждый запрос?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Клиент держит пул соединений и потоков, новый на запрос их теряет. У OkHttpClient пул соединений (keep-alive, HTTP/2 мультиплексирование), диспетчер с пулом потоков и кеш.
Варианты ответа
- Так требует лицензия OkHttp: один клиент на процесс приложения
- Клиент держит пул соединений и потоков, новый на запрос их теряетправильный ответ
- Второй созданный клиент перестанет работать, пока жив первый
- Иначе не будет работать HTTPS: сертификаты грузятся один раз
Разбор
У OkHttpClient пул соединений (keep-alive, HTTP/2 мультиплексирование), диспетчер с пулом потоков и кеш. Новый клиент на каждый запрос заново открывает TCP и TLS и плодит потоки. Если нужны другие настройки, client.newBuilder() создаёт вариант, разделяющий пул. Лицензия и HTTPS тут ни при чём.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.