Java asynchrone Prozesse ausführen

Ich versuche, einen asynchronen Prozess auszuführen, und ich möchte nicht, dass das Programm bis zum Ende der Ausführung dieser Prozesse wartet. Ich habe diese Frage gefundenSo wird ein Shell-Skript asynchron in einem Java-Programm ausgeführt aber es hat nicht die Antwort, die ich suche.

Ich führe lediglich Bash-Prozesse aus und möchte nicht, dass das Java-Programm wartet, bis es fertig ist, nachdem ich es ausgeführt habe. Das habe ich getan:

public void runCommandLine(String directory) throws IOException {
    Thread commandLineThread = new Thread(() -> {
        try {
            ProcessBuilder processBuilder = new ProcessBuilder(
                    "/bin/bash");
            processBuilder.directory(new File(directory));
            Process process = processBuilder.start();
            try (OutputStreamWriter osw = new OutputStreamWriter(process.getOutputStream())) {
                osw.write(command);
            }
            printStream(process.getErrorStream(), true);
            printStream(process.getInputStream(), true);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    });
    commandLineThread.start();
    System.out.println("Task Dispatched");
}

Ich habe auch einen weiteren Ausdruck am Ende der Hauptmethode ausgegeben, sodass ich die folgende Ausgabe erhalte:

Task Dispatched
Task Dispatched
End of psvm

Das Programm wird jedoch nicht beendet, da diese beiden Prozesse nicht beendet wurden.

Wie kann ich dieses Problem lösen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage