On Thu, 19 May 2022 13:05:54 GMT, Alan Bateman <al...@openjdk.org> wrote:
> This is the implementation of JEP 428: Structured Concurrency (Incubator). > > This is a non-final API that provides a gentle on-ramp to structure a task as > a family of concurrent subtasks, and to coordinate the subtasks as a unit. Marked as reviewed by mcimadamore (Reviewer). src/jdk.incubator.concurrent/share/classes/jdk/incubator/concurrent/StructuredTaskScope.java line 88: > 86: * {@code join} method after forking. > 87: * > 88: * <p> StructuredTaskScope defines the {@link #shutdown() shutdown} > method to shut down a This sentence, because of the place where it appears, is a bit confusing. So far we only know about the fact that a scope has an owner thread. So it seems odd that shutdown could be called _while_ the owner thread is waiting on a `join`. Of course, then you read what's next, and you discover that: (a) shutdown might be called by a custom scope subclass and that (b) shutdown is confined to the threads contained in this task scope - but this definition is only given much later. src/jdk.incubator.concurrent/share/classes/jdk/incubator/concurrent/StructuredTaskScope.java line 353: > 351: * > 352: * <p> The {@code handleComplete} method should be thread safe. It > may be > 353: * invoked by several threads at around the same. Something is missing? E.g. "at around the same TIME" ? (I'd suggest just using "concurrently") src/jdk.incubator.concurrent/share/classes/jdk/incubator/concurrent/StructuredTaskScope.java line 376: > 374: * > 375: * <p> If this task scope is {@linkplain #shutdown() shutdown} (or > in the process > 376: * of shutting down) then {@code fork} returns a Future representing > a {@link Future in plaintext? ------------- PR: https://git.openjdk.java.net/jdk/pull/8787