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

Alan Bateman alanb at openjdk.org
Fri Oct 24 14:04:15 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 incrementally with one additional commit since the last revision:

  Make implSpec clearer

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

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

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

  Stats: 5 lines in 1 file changed: 0 ins; 0 del; 5 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