Jak zakończyć drzewo procesów z Java?

Używam komendy Runtime.getRuntime (). exec () w Javie, aby uruchomić plik wsadowy, który z kolei uruchamia inny proces dla platformy Windows.

javaw.exe(Process1)
 |___xyz.bat(Process2)
        |___javaw.exe(Process3)

Runtime.getRuntime (). Exec () zwraca obiekt Process, który ma metodę destroy, ale kiedy używam destroy (), zabija on tylko xyz.bat i pozostawia podproces pliku wsadowego zwisający.

Czy w Javie jest czysty sposób na zniszczenie drzewa procesów począwszy od procesu wsadowego jako root?

* Nie mogę używać żadnych niestandardowych bibliotek Pozbądź się pliku wsadowego, aby ominąć problem