abriendo un shell e interactuando con su E / S en java

Estoy tratando de abrir un shell (xterm) e interactuar con él (escribir comandos y leer el resultado del shell)

Aquí hay una muestra de código que no funcionará:

public static void main(String[] args) throws IOException {
    Process pr = new ProcessBuilder("xterm").start();
    PrintWriter pw = new PrintWriter(pr.getOutputStream());
    pw.println("ls");
    pw.flush();
    InputStreamReader in = new InputStreamReader(pr.getInputStream());
    System.out.println(in.read());
}

Cuando ejecuto este programa, se abre una ventana "xterm" y no se ingresa el comando "ls". Solo cuando cierro la ventana se imprime un "-1" y no se lee nada del shell

IMPORTANTE-

Sé que puedo usar:
Proceso pr = nuevo ProcessBuilder ("ls"). Start ();

Para obtener la salida, pero necesito abrir el "xterm" para otros usos

Muchas gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta