169 похожих чатов

Может кто-нибудь подсказать: есть у меня джава метод, который возвращает

Future. Я хочу его кучу раз вызвать и подождать завершения всех их. А если вылетит исключение в какой-то из разов, то быстро его поймать, все остановить и пойти дальше. Ничего умнее чем собрать все в список и сделать futures.forEach { it.get() } нет?

5 ответов

5 просмотров

Есть, get использовать не нужно

Не понял, а что тут может быть умнее

Если у тебя только Future, то облом — ни как. Future это не асинхронный примитив. Он для thread-based programming. Там есть только блокирующий get. То есть на каждый future, чтобы его ждать, тебе нужен отдельный поток.

Вот как-то так нужно писать: fun main(args: Array<String>) { val futures = listOf<Future<String>>() GlobalScope.launch { var isDone = false var isDoneExceptionally = false while (isActive && !isDone) { futures.forEach { if (it.isDone) { try { it.get() } catch (e: Exception) { // LOGGER.error(e) isDoneExceptionally = true } } if (it.isCancelled) { isDoneExceptionally = true } } if (futures.all { it.isDone }) isDone = true delay(100) } } }

В общем-то вот полностью рабочий код: https://gist.github.com/IRus/831d5da4234a7ff13cc6dbbccc56064e Осталось понять только как там cancel работает, но он будет падать asap

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
@ahndmn @ayaw0_0 здарова, на чем пишете?
Aiwan \ (•◡•) / _bot
7
Коллеги, как получить PId для собственного процесса из под линукса?
Роман Лях (rgreat)
6
Карта сайта