Здравствуйте, Serginio1, Вы писали:
S>Ну и чем это лучше S>Task.WhenAll
а) WhenAll тут не нужен.
б) Суть в другом. В jvm nет никаких async функций. Любая функция может быть запущена, как синхронно, так и ассинхронно(виртуальные потоки, ака "зеленые"). Решение принимает тот, кто ее вызывает, a не тот кто пишет . При этом, если она запущена на "зеленых", то блокировать OS поток она не будет, даже если там бесконечный цикл и без всяких дотнетовских Task.Yield(). Сейчас прибежит mrTwister и скажет, что в GoLang то же. И отчасти он будет прав, но лишь отчасти. Из за криворукости "простоты" там не поддерживается вся семантика в обеих контестах. В частности, если функция вызвана через go, то ее результат получить невозможно. Единственный способ получения результата из ассинхронного вызова это использовать всякие неявные методы (обычно каналы, ну можно и shared memory), но это требует переписки функций, то есть фактически не сильно отличается от .net.