RFR: 8367857: Implement JEP 525: Structured Concurrency (Sixth Preview) [v5]

Alan Bateman alanb at openjdk.org
Fri Oct 24 11:46:41 UTC 2025


> Updates for JEP 525.
> 
> - `Joiner:onTimeout` is added  with `join` method changed to invoke this joiner method if
>   a timeout is configured and the timeout expires before or while waiting. The `onTimeout`
>   throws `TimeoutException` or may do nothing. This allows for `Joiner` implementation that
>   are capable of returning a result from the subtasks that complete before the timeout expires.
> - The `configFunction` parameter to the 3-arg `open` is changed from
>   `Function<Configuration, Configuration>` to `UnaryOperator<Configuration>`.
> - `Subtask::get` and `Subtask::exception` changed to consistently throw if called from
>   any thread before the scope owner has joined.
> - `StructuredTaskScope::join` is now specified so that it may be called again if interrupted.
> - The parameter on `Joiner::onFork` and `Joiner::onComplete` is changed from
>   `Subtask<? extends T` to `Subtask<T>`.
> - `Joiner.allSuccessOrThrow` is changed to return a list of results instead of a stream of
>   subtasks. `Joiner.allUntil` is changed to return a list of subtasks.
> - `Joiner.anySuccessfulResultOrThrow` is renamed to `anySuccessfulOrThrow`.
> - `Joiner.allUntil(Predicate)` is changed to allow `join` return the stream of all forked
> subtasks when the timeout expires.
> - `Joiner` is no longer a `@FunctionalInterface`.
> 
> Most of the changes are to API docs and tests. Some links are changed to use double hash mark.

Alan Bateman 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 17 additional commits since the last revision:

 - Reviewer feedback, sync up from loom repo
 - Merge branch 'master' into JDK-8367857
 - Sync up from loom repo
 - Merge branch 'master' into JDK-8367857
 - Merge branch 'master' into JDK-8367857
 - Sync up from loom repo
 - Merge branch 'master' into JDK-8367857
 - Sync up from loom repo
 - Merge branch 'master' into JDK-8367857
 - Merge branch 'master' into JDK-8367857
 - ... and 7 more: https://git.openjdk.org/jdk/compare/7cb5e6b0...5be33593

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/27392/files
  - new: https://git.openjdk.org/jdk/pull/27392/files/28617cff..5be33593

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=27392&range=04
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=27392&range=03-04

  Stats: 4728 lines in 78 files changed: 2450 ins; 1850 del; 428 mod
  Patch: https://git.openjdk.org/jdk/pull/27392.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/27392/head:pull/27392

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


More information about the core-libs-dev mailing list