import java.net.URI;
import java.net.http.*;
import java.util.*;
import java.util.concurrent.*;
class Demo {
static final HttpClient client = HttpClient.newHttpClient();
CompletableFuture<String> fetchAsync(String url) {
var req = HttpRequest.newBuilder(URI.create(url)).GET().build();
return client
.sendAsync(req, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body);
}
public static void main(String[] args) {
var urls = List.of("https://example.com", "https://example.org", "https://example.net");
// Fire all concurrently, collect results in order
var futures = urls.stream()
.map(new Demo()::fetchAsync)
.toList();
// Wait for all — allOf returns CF<Void>, so flatten manually
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
for (int i = 0; i < urls.size(); i++) {
System.out.println(urls.get(i) + " → " + futures.get(i).join().length() + " bytes");
}
}
}
Create a free account and build your private vault. Share publicly whenever you want.