Sobes.tech
Junior — Middle

Чӣ гуна иҷрои ҳамзамон дархостҳои шабакавиро ба роҳ монда, ҷавобҳоро дар як контейнер ҷамъ кардан, бо истифода аз бисёрсоҳавӣ?

sobes.tech AI

Ҷавоб аз AI

Для параллельного выполнения нескольких сетевых запросов в Android можно использовать многопоточность с помощью ExecutorService или библиотек, таких как RxJava или Kotlin Coroutines.

Пример с использованием ExecutorService и Future:

ExecutorService executor = Executors.newFixedThreadPool(3);

Callable<String> request1 = () -> performNetworkRequest(url1);
Callable<String> request2 = () -> performNetworkRequest(url2);
Callable<String> request3 = () -> performNetworkRequest(url3);

List<Callable<String>> tasks = Arrays.asList(request1, request2, request3);

try {
    List<Future<String>> futures = executor.invokeAll(tasks);
    List<String> results = new ArrayList<>();
    for (Future<String> future : futures) {
        results.add(future.get()); // Получаем результат каждого запроса
    }
    // results содержит ответы всех запросов
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
} finally {
    executor.shutdown();
}

Таким образом, каждый запрос выполняется в отдельном потоке, а результаты собираются в один список после завершения всех задач.

Если используется Kotlin, то удобнее применять корутины с async и awaitAll для параллельного выполнения и объединения результатов.