@NullSafe
  public static boolean kill(Process process) {
    boolean alive = isAlive(process);

    if (alive) {
      process.destroy();

      try {
        alive = !process.waitFor(KILL_WAIT_TIMEOUT, KILL_WAIT_TIME_UNIT);
      }
      catch (InterruptedException ignore) {
        Thread.currentThread().interrupt();
      }
      finally {
        if (alive) {
          process.destroyForcibly();

          try {
            alive = !process.waitFor(KILL_WAIT_TIMEOUT, KILL_WAIT_TIME_UNIT);
          }
          catch (InterruptedException ignore) {
            Thread.currentThread().interrupt();
          }
        }
      }
    }

    return !(alive && isAlive(process));
  }
@ NullSafe public static boolean kill ( Process process ) { boolean alive = isAlive ( process ) ; if ( alive ) { process . destroy ( ) ; try { alive = ! process . waitFor ( KILL_WAIT_TIMEOUT , KILL_WAIT_TIME_UNIT ) ; } catch ( InterruptedException ignore ) { Thread . currentThread ( ) . interrupt ( ) ; } finally { if ( alive ) { process . destroyForcibly ( ) ; try { alive = ! process . waitFor ( KILL_WAIT_TIMEOUT , KILL_WAIT_TIME_UNIT ) ; } catch ( InterruptedException ignore ) { Thread . currentThread ( ) . interrupt ( ) ; } } } } return ! ( alive && isAlive ( process ) ) ; }
Kills the given {@link Process}.

@param process {@link Process} to kill.
@return a boolean value indicating whether the the given {@link Process} was successfully terminated.
@see java.lang.Process
@see java.lang.Process#destroy()
@see java.lang.Process#destroyForcibly()
@see #isAlive(Process)