Starting multiple threads and having each exec() then destroy() a running java process result in some of the process not being destroyed and still running after program exit. He
this will ensure the completion of the previous process. I think you p.destroy command gets invoked sooner than the exec() command performs the action. Therefore it becomes useless.