Devi acquisire lo stdout e lo stderr in thread separati (per evitare il blocco) ed emetterlo non appena lo ottieni, in attesa del completamento del processo .
Tieni presente che potresti dover leggere sia stdout che stderr. Oppure il tuo output potrebbe andare invece al file di registro configurato.
Vedi questa risposta
per maggiori informazioni e riferimenti al codice di esempio. Consulta anche questo articolo , che discute le insidie comuni quando si utilizza Runtime.exec()