Я прихожу из мира JS и пытаюсь понять, как асинхронное программирование работает в современном Java. Я читал, что самые последние большие обновления в этом топе c были сделаны в Java 8, где они представили класс CompletableFuture
, но это кажется немного сложным, и я подумал, что будет проще поймите, есть ли у меня какие-то параллели с чем-то, что я уже знаю.
В современном Node.js для асинхронного выполнения 2 функций с асинхронными вызовами (IO, network et c) я бы написал Promise.all(function1(), function2())
.
Допустим, я хочу сделать 3 запроса HTTP Get асинхронно, получить результат выполнения и использовать его в некоторой функции с именем consumeResults()
. Вот как бы я сделал это в Node.js
async function executeAndDoSomethingWithResults() {
const request1 = httpGetRequest("url1")
const request2 = httpGetRequest("url2")
const request3 = httpGetRequest("url3")
const results = await Promise.all([request1, request2, request3])
consumeResults(results)
}
async function httpGetRequest(url) {
// blablabla
// wrap the native http module to return a Promise
}
Что было бы альтернативой этому фрагменту кода в Java 8 +?