JEP 102 Process Updates revised API draft
Chris Hegarty
chris.hegarty at oracle.com
Thu Mar 12 13:09:26 UTC 2015
This is looking good, still looking at the detail… just a quick comment.
It may be possible to remove the UOE from Process.onExit, if you implement the “never to be used” default without using ProcessHandle?
diff --git a/src/java.base/share/classes/java/lang/Process.java b/src/java.base/share/classes/java/lang/Process.java
--- a/src/java.base/share/classes/java/lang/Process.java
+++ b/src/java.base/share/classes/java/lang/Process.java
@@ -360,20 +360,20 @@
* a unique instance is returned for each call to {@code onExit}.
*
* @throws IllegalStateException if the process is the current process
- * @throws UnsupportedOperationException if the Process implementation
- * does not support this operation
- * @implSpec
- * The Process instances created by {@link ProcessBuilder ProcessBuilder} return
- * a {@code ComputableFuture<Process>} equivalent
- * to {@code toHandle().onExit().thenApply(ph -> this)}.
*
- * @implNote
- * The implementation of this method is {@link #toHandle toHandle().onExit().thenApply(ph -> this)}.
- * Override to provide more specific onExit behavior.
* @since 1.9
*/
public CompletableFuture<Process> onExit() {
- return toHandle().onExit().thenApply((ph) -> this);
+ return CompletableFuture.supplyAsync(this::wait0);
+ }
+
+ private Process wait0() {
+ while(true) {
+ try {
+ waitFor();
+ return this;
+ } catch (InterruptedException x) {}
+ }
}
/**
-Chris.
On 11 Mar 2015, at 19:58, Roger Riggs <Roger.Riggs at oracle.com> wrote:
> Hi,
>
> The recommendations have been applied to the javadoc and the sandbox JDK-8046092-branch.
>
> http://cr.openjdk.java.net/~rriggs/ph-apidraft/
>
> Some operations on a Process take an extra dereference due to the delegation to ProcessHandle.
> For example, getting the cputime or startTime of the process:
> Process p = ...
> Duration d = p.toHandle().info().totalCpuDuration();
> Instant start = p.toHandle().info().startInstant();
>
> As do the listing of children; convenience methods could be introduced with the UOE possibility
> but that is a risk only for externally defined Process subtypes.
> Developers working with Processes should not have to deal with ProcessHandle
> to get information about the processes they spawn.
>
> Comments appreciated, Roger
>
More information about the core-libs-dev
mailing list