Как ни странно, я просто работаю над этим: процесс Java, выполняющий другие процессы Java. Я использовал статью От Runtime.exec () до ProcessBuilder в качестве твердой основы и Когда Runtime.exec () не будет как хороший совет, как сожрать выходные потоки.
PS. Для тех, кому интересно, мне пришлось это сделать (вместо порождения новых потоков), потому что еще один процесс Java проверяет наличие этих процессов, которые, как правило, запускаются отдельно с помощью команд оболочки.