RFR: 8364361: [process] java.lang.Process should implement Closeable [v26]

Pavel Rappo prappo at openjdk.org
Fri Oct 31 14:45:29 UTC 2025


On Fri, 31 Oct 2025 14:32:24 GMT, Roger Riggs <rriggs at openjdk.org> wrote:

>> The teardown of a Process launched by `ProcessBuilder` includes the closing of streams and ensuring the termination of the process is the responsibility of the caller. The `Process.close()` method provides a clear and obvious way to ensure all the streams are closed and the process terminated.
>> 
>> The try-with-resources statement is frequently used to open streams and ensure they are closed on exiting the block. By implementing `AutoClosable.close()` the completeness of closing the streams and process termination can be done by try-with-resources.
>> 
>> The actions of the `close()` method are to close each stream and destroy the process if it has not terminated.
>
> Roger Riggs has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Correct reference to ProcessExamples.java to use the `file` tag.
>  - Miscellaneous javadoc improvements suggested by reviewers.
>    Updated the example program to be a standalone program as might be run
>    as a compact source file main program.

Looks really good. Below nits are just that -- nits, and are optional. Thanks for your perseverance.

src/java.base/share/classes/java/lang/Process.java line 130:

> 128:  * Processes that have terminated or been terminated are monitored and their resources released.
> 129:  *
> 130:  * <p>Streams should be closed when they are no longer needed, to avoid delaying

Since there's no way to link to `Reader.close`, `Writer.close`, `InputStream.close` and `OutputStream.close` at the same time, consider linking to some of those from `@see` tags.

src/java.base/share/classes/java/lang/snippet-files/ProcessExamples.java line 36:

> 34:             // Read all lines and print each
> 35:             reader.readAllLines()
> 36:                     .forEach(IO::println);

Using `IO` instead of `System.out` in this particular case is an extra touch; I like it!

-------------

Marked as reviewed by prappo (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/26649#pullrequestreview-3404603961
PR Review Comment: https://git.openjdk.org/jdk/pull/26649#discussion_r2481654961
PR Review Comment: https://git.openjdk.org/jdk/pull/26649#discussion_r2481645906


More information about the core-libs-dev mailing list