Prima di tutto Grazie andbin, alla questione del readLine() non ci avevo proprio pensato.
La questione del sincronismo invece non è un problema poiché questo è solo un esempio per identificare il problema.
Però il problema principale è che l'eseguibile non viene avviato: genera l'errore di cui avevo riportato l'immagine, e poi o si pianta la shell, oppure, dopo la chiusura del processo Java, il processo ntvdm.exe inizia ad occupare il 100% della CPU.

Per dire, non funziona nemmeno questo codice:
codice:
import java.io.*;

public class Test3
{
    public static void main (String[] args) {
        if (args.length < 1) {
            System.out.println("Use: java Test <program.exe>\n\n");
            System.exit(0);
        }        

        try {
            Process p = Runtime.getRuntime().exec(args[0]);
			
            // destroy the process
            p.destroy();

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
mi sa tanto che il problema non è banale.
andbin, ma tu hai provato ad eseguirlo?