Предположим, что следующий код загружает коллекцию однородных объектов в JSON или XML:
Parser parser = new Parser(new URL("https://example.com/api/endpoint").openStream());
Для каждого объекта из коллекции выполняется какая-то логика, которая может занимать до минуты. При этом парсер потоковый. Интерфейс всего процесса загрузки и декодирования оборачивается в java.util.Iterator, и код выполнения логики, соответственно, будет использовать методы hasNext() и next(). Что произойдёт, если сервер не дождавшись, пока данные будут полностью отправлены, закроект подключение?
Или проще говоря, URL::openStream возвращает InputStream, данные которого полностью считываются в память? Или же данные по сети передаются по времени пропорционально вызовам InputStream::read?