RFR: 8367857: Implement JEP 525: Structured Concurrency (Sixth Preview) [v3]
Pavel Rappo
prappo at openjdk.org
Thu Oct 23 11:58:08 UTC 2025
On Tue, 21 Oct 2025 10:53:19 GMT, Alan Bateman <alanb at openjdk.org> wrote:
>> 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 13 additional commits since the last revision:
>
> - 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
> - Improve docs and review feedback
> - Merge branch 'master' into JDK-8367857
> - Add JEP number
> - Merge branch 'master' into JDK-8367857
> - ... and 3 more: https://git.openjdk.org/jdk/compare/5cf6df2e...e9ab6f18
src/java.base/share/classes/java/util/concurrent/StructuredTaskScope.java line 216:
> 214: * monitoring and management purposes, or has a timeout that cancels the scope if the
> 215: * timeout expires before or while waiting for subtasks to complete. The {@code open}
> 216: * method is called with a {@linkplain UnaryOperator operator} that is applied to the
Trivially:
Suggestion:
* method is called with an {@linkplain UnaryOperator operator} that is applied to the
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27392#discussion_r2454872775
More information about the core-libs-dev
mailing list