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

Alan Bateman alanb at openjdk.org
Sat Oct 4 06:50:50 UTC 2025


On Wed, 1 Oct 2025 17:45:41 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 one additional commit since the last revision:
> 
>   Clarify the use of waitFor after close() or T-W-R exit.

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

> 205:      * Calling {@linkplain #waitFor() waitFor} after
> 206:      * {@linkplain #close() close} or after the try-with-resources block exits
> 207:      * can verify that the process has been terminated.

"can verify that the process has been terminated". I think this section is a bit confusing to read. It puts doubt into the reader's mind that the process may not have terminated and call waitFor after close to be sure. It's okay for the all powerful destroyForcibly to speak about the possibility that the process may not terminate immediately but the "close" method is more user facing and users will expect the process to have terminated.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/26649#discussion_r2403804363


More information about the core-libs-dev mailing list