Skip to content

Instantly share code, notes, and snippets.

@samuelteixeiras
Last active October 16, 2021 20:06
Show Gist options
  • Save samuelteixeiras/54f06ada3ee604e3c86db812c5f56c21 to your computer and use it in GitHub Desktop.
Save samuelteixeiras/54f06ada3ee604e3c86db812c5f56c21 to your computer and use it in GitHub Desktop.
Completed future test
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
public class CompletedFutureTest {
private static ExecutorService executor = Executors.newFixedThreadPool(3);
public static void main(String args[]) {
List<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
System.out.println("Start list 1");
getIntegerList(numbers);
System.out.println("End list 1");
System.out.println("Start list 2");
getIntegerList2(numbers);
System.out.println("End list 2");
executor.shutdown();
}
private static List<Integer> getIntegerList(List<Integer> numbers) {
return numbers
.stream()
.map(
number ->
CompletableFuture.supplyAsync(
() -> getNumberCalculation(number),
executor
)
)
.map(CompletableFuture::join)
.collect(Collectors.toList());
}
private static List<Integer> getIntegerList2(List<Integer> numbers) {
return numbers
.stream()
.map(
number ->
CompletableFuture.supplyAsync(
() -> getNumberCalculation(number),
executor
)
)
.collect(Collectors.toList())
.stream()
.map(CompletableFuture::join)
.collect(Collectors.toList());
}
private static int getNumberCalculation(int number) {
try {
TimeUnit.SECONDS.sleep(1);
System.out.println("Number " + number + " calculated");
} catch (InterruptedException e) {
e.printStackTrace();
}
return number * 2;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment