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

Viktor Klang vklang at openjdk.org
Fri Oct 24 14:11:36 UTC 2025


On Fri, 24 Oct 2025 14:04:15 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 incrementally with one additional commit since the last revision:
> 
>   Make implSpec clearer

Great work, Alan!

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

Marked as reviewed by vklang (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/27392#pullrequestreview-3377044520


More information about the core-libs-dev mailing list