Waiting for processes
When a process starts another process, it may wait for the process many times because it needs the result of the other program. If the structure of the task can be organized in a way that the parent program can do something else while waiting for the child process to finish, then the parent process can invoke the isAlive()
method on the process handle. Many times, the parent process has nothing to do until the spawned process finishes. Old applications implemented loops that called the Thread.sleep()
method so CPU was not excessively wasted and from time to time the process was checked to see if it was still alive. Java 9 offers a much better approach to the waiting process.
The ProcessHandle
interface has a method called onExit
that returns a CompletableFuture
. This class was introduced in Java 8 and makes it possible to wait for a task to be finished without looping. If we have the handle to a process we can simply call the handle.onExit().join()
method to wait until...