On Tue, 21 Oct 2025 10:53:19 GMT, Alan Bateman <[email protected]> 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/5f263255...e9ab6f18

I haven't been paying much attention to the recent previews of this feature, so 
feel free to point me to a relevant discussion elsewhere.

As I understand it, an unchecked StructuredTaskScope.TimeoutException was added 
in JDK 25. There's also the well-known checked java.util.TimeoutException. I 
assume that the namesake exception was added solely because it's unchecked. I 
also assume UncheckedTimeoutException was considered at some stage, because in 
my mind, the situation is similar to that of IOException/UncheckedIOException.

Why did you choose to add a namesake instead of an unchecked wrapper exception? 
Was it because you consider that the likelihood of mixing the two 
TimeoutException's is low in the context of a single file?

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

PR Comment: https://git.openjdk.org/jdk/pull/27392#issuecomment-3426171107

Reply via email to