RFR: 8364361: [process] java.lang.Process should implement close and be AutoCloseable
Volkan Yazici
vyazici at openjdk.org
Wed Aug 6 08:13:07 UTC 2025
On Tue, 5 Aug 2025 18:21: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.
src/java.base/share/classes/java/lang/Process.java line 645:
> 643: * The inputReader and inputStream from the process are closed.
> 644: * The errorReader and errorStream from the process are closed.
> 645: * The process is destroyed.
Suggestion:
* The {@code outputWriter} and {@code outputStream} to the process are closed.
* The {@code inputReader} and {@code inputStream} from the process are closed.
* The {@code errorReader} and {@code errorStream} from the process are closed.
* The process is destroyed.
*
src/java.base/share/classes/java/lang/Process.java line 657:
> 655: List<IOException> exceptions = closeable.stream()
> 656: .map(Process::doClose)
> 657: .filter((Objects::nonNull))
Suggestion:
.filter(Objects::nonNull)
src/java.base/share/classes/java/lang/Process.java line 668:
> 666: // Wait briefly for process to exit, if not exited immediately, destroy
> 667: try {
> 668: boolean alive = waitFor(Duration.ofMillis(2000));
Doesn't this go against the `the process is terminated without waiting` statement in the spec?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26649#discussion_r2256282397
PR Review Comment: https://git.openjdk.org/jdk/pull/26649#discussion_r2256290785
PR Review Comment: https://git.openjdk.org/jdk/pull/26649#discussion_r2256295388
More information about the core-libs-dev
mailing list