What's the best way to kill a process in Java ?
Get the PID and then killing it with Runtime.exec() ?
Use destroyForcibly() ? 
What's the difference between these two methods, and is there any others solutions ?
Then you probably have a reference to it (ProcessBuilder.start() or Runtime.exec() both return a reference). In this case, you can simply call p.destroy(). I think this is the cleanest way (but be careful: sub-processes started by p may stay alive, check Process.destroy does not kill multiple child processes for more info).
The destroyForcibly should only be used  if destroy() failed after a certain timeout. In a nutshell
destroy()
destroyForcibly() if process is still aliveThen you don't have much choice: you need to pass through the OS API (Runtime.exec). On Windows, the program to call will be taskkill.exe, while on Mac and Linux you can try kill.
Have a look at Support for Process.destroyForcibly() and .isAlive() from Java 8 and Killing a process using Java and Code a Simple Java App to Kill Any Process After a Specified Time for more info.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With