S> Этот код частный случай. А вот теперь мне надо запустить несколько чтений и прервать все есть один из них вызвал исключение?
S>https://learn.microsoft.com/ru-ru/dotnet/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern#whenallorfirstexception
Я полагаю, что для этого будет разновидность StructuredTaskScope (тут
Киллер фича JDK 21 — virtual threads) в сочетании с Executors.newVirtualThreadPerTaskExecutor (тут
Киллер фича JDK 21 — virtual threads)
И по аналогичной схеме можно сделать всё, что написано по твоей ссылке.