← All stories
● Covered by 1 source · 1 reportMedium impact1 neutral

JEP 543 Finalizes Structured Concurrency in JDK 28 After Seven Preview Rounds

🔄 Updated 18d ago
New to BrevFeed? We gather this story from every outlet covering it into one summary — ranked by real-world impact, not just the latest headline — so you never miss what matters. What is BrevFeed? →

Key points

  • JEP 543 finalized in JDK 28.
  • StructuredTaskScope API is now stable.
  • Concludes longest Project Loom preview cycle.
  • Manages related subtasks as a single unit.

Structured Concurrency Finalized

JEP 543, Structured Concurrency, has been integrated into JDK 28, transitioning the StructuredTaskScope API within java.util.concurrent to a final status. This finalization occurred without any API changes from its seventh preview in JDK 27, meaning codebases on JDK 27 can migrate by recompiling without the --enable-preview flag.

Longest Project Loom Preview Cycle

The finalization of JEP 543 marks the conclusion of the longest preview cycle for any Project Loom feature. Structured concurrency was first introduced as an incubator API in JDK 19 (JEP 428) and JDK 20 (JEP 437), then progressed through seven preview iterations across subsequent JDK releases up to JDK 27.

Core Objective and Problem Solved

The core objective of Structured Concurrency is to treat groups of related subtasks running in different threads as a single unit of work. This ensures that a failure in one subtask leads to the cancellation of others, and the parent scope cannot exit until all child threads have terminated. This addresses limitations in traditional ExecutorService and Future pipelines, where parent methods could return while subtasks continued, and failures only surfaced upon explicit Future.get() calls.

API Details

The API centers on the sealed interface StructuredTaskScope<T, R, R_X extends Throwable>, which is opened via static factory methods like open(). The join() method waits for subtasks, cancels others on the first failure, and throws ExecutionException. Each fork() call starts a virtual thread by default, and the close() method in a try-with-resources block cancels unfinished subtasks and waits for their threads to terminate.

Completion policies are defined through the Joiner<T, R, R_X> interface, offering methods such as Joiner.awaitAllSuccessfulOrThrow(), Joiner.allSuccessfulOrThrow(), Joiner.anySuccessfulOrThrow(), and Joiner.allUntil(Predicate) to manage subtask completion and cancellation behavior.

✨ This summary was generated by AI from the outlets' reporting listed below. It is not independently verified and may contain errors — check the original sources. How BrevFeed works →

The daily brief

One email each morning: the day's tech stories, clustered across outlets and summarized. No account needed.

One email a day. Unsubscribe in one click, any time.

Today's brief

Spend a few minutes, get the whole day. Every topic's top stories in one hands-free rundown — listen, watch, or read the transcript.

~4 min · 3 stories · Nov 07

▶ Play today's brief Listen on Spotify

New every morning, and the back catalogue is archived by date.

Reporting from

JEP 543, Structured Concurrency, has been finalized and integrated into JDK 28, making the StructuredTaskScope API a stable feature. This concludes the longest preview cycle for a Project Loom feature, providing a standardized way to manage groups of related subtasks as a single unit of work.