Да, вам нужно порождать другой поток для сетевого взаимодействия, а затем, когда он завершит чтение, вы можете использовать логический флаг volatile, чтобы указать, что работа завершена, и основной / прикладной поток может принять данные и включить его. Данные могут быть «частью» изображения, если вы хотите, чтобы изображение отображалось по частям (как это делает браузер).