Сообщение Re[26]: Киллер фича JDK 21 - virtual threads от 11.05.2023 13:02
Изменено 11.05.2023 13:21 ·
Re[26]: Киллер фича JDK 21 - virtual threads
Здравствуйте, Serginio1, Вы писали:
S>·>Упрости его своим Task, коли обещал.
S> Этот код частный случай.
Соврал ты, короче. Проще не получается.
Любой кусок кода — это частный случай.
S>А вот теперь мне надо запустить несколько чтений и прервать все есть один из них вызвал исключение?
Это никакого отношения к сабжу не имеет. Но в качестве ликбеза:
S>https://learn.microsoft.com/ru-ru/dotnet/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern#whenallorfirstexception
А думаешь откуда это появилось в дотнете? Они же слизали CompletableFuture, которое было доступно ещё лет ~10 назад, хреново как-то слизали, код — жуть. Вот более вменяемый аналог:
S>·>Упрости его своим Task, коли обещал.
S> Этот код частный случай.
Соврал ты, короче. Проще не получается.
Любой кусок кода — это частный случай.
S>А вот теперь мне надо запустить несколько чтений и прервать все есть один из них вызвал исключение?
Это никакого отношения к сабжу не имеет. Но в качестве ликбеза:
S>https://learn.microsoft.com/ru-ru/dotnet/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern#whenallorfirstexception
А думаешь откуда это появилось в дотнете? Они же слизали CompletableFuture, которое было доступно ещё лет ~10 назад, хреново как-то слизали, код — жуть. Вот более вменяемый аналог:
<T> CompletableFuture<List<T>> WhenAllOrFirstException(CompletableFuture<T>... tasks)
{
CompletableFuture<Void> all = CompletableFuture.allOf(tasks);
Stream.of(tasks).forEach(t -> t.exceptionally(ex ->
{
all.completeExceptionally(ex);
return null;
}));
return all.thenApply(x -> Stream.of(tasks).map(f -> f.join()).toList());
}
Re[26]: Киллер фича JDK 21 - virtual threads
Здравствуйте, Serginio1, Вы писали:
S>·>Упрости его своим Task, коли обещал.
S> Этот код частный случай.
Соврал ты, короче. Проще не получается.
Любой кусок кода — это частный случай.
S>А вот теперь мне надо запустить несколько чтений и прервать все есть один из них вызвал исключение?
Это никакого отношения к сабжу не имеет. Но в качестве ликбеза:
S>https://learn.microsoft.com/ru-ru/dotnet/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern#whenallorfirstexception
А думаешь откуда это появилось в дотнете? Они же слизали CompletableFuture, которое было доступно ещё лет ~10 назад, хреново как-то слизали, код — жуть. Вот более вменяемый аналог:
S>·>Упрости его своим Task, коли обещал.
S> Этот код частный случай.
Соврал ты, короче. Проще не получается.
Любой кусок кода — это частный случай.
S>А вот теперь мне надо запустить несколько чтений и прервать все есть один из них вызвал исключение?
Это никакого отношения к сабжу не имеет. Но в качестве ликбеза:
S>https://learn.microsoft.com/ru-ru/dotnet/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern#whenallorfirstexception
А думаешь откуда это появилось в дотнете? Они же слизали CompletableFuture, которое было доступно ещё лет ~10 назад, хреново как-то слизали, код — жуть. Вот более вменяемый аналог:
<T> CompletableFuture<List<T>> WhenAllOrFirstException(CompletableFuture<T>... tasks)
{
var all = CompletableFuture.allOf(tasks);
Stream.of(tasks).forEach(t -> t.exceptionally(ex ->
{
all.completeExceptionally(ex);
return null;
}));
return all.thenApply(x -> Stream.of(tasks).map(f -> f.join()).toList());
}