11package com .stacktips .threads ;
22
33import java .util .List ;
4- import java .util .concurrent .*;
4+ import java .util .concurrent .CompletableFuture ;
5+ import java .util .concurrent .ExecutorService ;
6+ import java .util .concurrent .Executors ;
7+ import java .util .concurrent .TimeUnit ;
58
69public class WebScraperUsingCompletableFuture {
710
@@ -15,18 +18,16 @@ public WebScraperUsingCompletableFuture(int nThreads) {
1518
1619 public List <String > scrapeWebsites (List <String > urls ) {
1720 List <CompletableFuture <String >> futures = urls .stream ()
18- .map (url -> CompletableFuture .supplyAsync (() -> webScraper .scrapeWebsite (url ), executorService )
19- .orTimeout (30 , TimeUnit .SECONDS )
20- .exceptionally (e -> "Error: " + e .getMessage ()))
21- .toList ();
21+ .map (url -> CompletableFuture .supplyAsync (() -> webScraper .scrapeWebsite (url ), executorService )
22+ .orTimeout (30 , TimeUnit .SECONDS )
23+ .exceptionally (e -> "Error: " + e .getMessage ()))
24+ .toList ();
2225
2326 return futures .stream ()
24- .map (CompletableFuture ::join )
25- .toList ();
27+ .map (CompletableFuture ::join )
28+ .toList ();
2629 }
2730
28-
29-
3031 public void shutdown () {
3132 executorService .shutdown ();
3233 try {
@@ -40,11 +41,11 @@ public void shutdown() {
4041
4142 public static void main (String [] args ) {
4243 List <String > urls = List .of (
43- "https://www.example.com" ,
44- "https://www.github.com" ,
45- "https://www.stackoverflow.com" ,
46- "https://www.java.com" ,
47- "https://www.spring.io"
44+ "https://www.example.com" ,
45+ "https://www.github.com" ,
46+ "https://www.stackoverflow.com" ,
47+ "https://www.java.com" ,
48+ "https://www.spring.io"
4849 );
4950
5051 WebScraperUsingCompletableFuture scraper = new WebScraperUsingCompletableFuture (3 );
0 commit comments