RFR: 8364361: [process] java.lang.Process should implement close and be AutoCloseable [v3]

Roger Riggs rriggs at openjdk.org
Tue Aug 19 21:43:41 UTC 2025


> 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 with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision:

 - Merge branch 'master' into 8364361-process-autocloseable
 - Throw IOExceptions on close instead of logging.
 - The close method is idempotent, it will only close the streams and
   destroy the process on the first call to close.
 - Updates from review comments:
    - Editorial improvements to javadoc
    - Exceptions that occur closing streams are quietly logged
      to the java.lang.Process system log as DEBUG
    - The prototype code attempting to wait for process exit is removed,
      it provided marginal benefit and raised complexity due to interrupt handling
    - Test updates for racy test cases that are not errors
 - 8364361: [process] java.lang.Process should implement close and be AutoCloseable
   Specify and implement AutoCloseable for Process.
   Add tests and example code as a snippet.

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/26649/files
  - new: https://git.openjdk.org/jdk/pull/26649/files/c04ee6e2..06af45c0

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=26649&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26649&range=01-02

  Stats: 23164 lines in 697 files changed: 14071 ins; 6269 del; 2824 mod
  Patch: https://git.openjdk.org/jdk/pull/26649.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/26649/head:pull/26649

PR: https://git.openjdk.org/jdk/pull/26649


More information about the core-libs-dev mailing list