Como finalizo uma árvore de processos do Java?

Eu estou usando o comando Runtime.getRuntime (). exec () em Java para iniciar um arquivo de lote que, por sua vez, inicia outro processo para a plataforma Windows.

<code>javaw.exe(Process1)
 |___xyz.bat(Process2)
        |___javaw.exe(Process3)
</code>

Runtime.getRuntime (). Exec () retorna um objeto Process que possui um método destroy, mas quando eu uso destroy (), ele mata apenas o xyz.bat e deixa o subprocesso pendente do arquivo em lote.

Existe uma maneira limpa em Java para destruir a árvore de processos começando com o processo em lote como root?

* Não consigo usar nenhuma biblioteca personalizada \ Livre-se do arquivo em lotes para contornar o problema

questionAnswers(5)

yourAnswerToTheQuestion