Skip to content

Instantly share code, notes, and snippets.

@vichu
Created April 11, 2018 00:34
Show Gist options
  • Save vichu/8edae3449c9ade71a962ec2877ae696c to your computer and use it in GitHub Desktop.
Save vichu/8edae3449c9ade71a962ec2877ae696c to your computer and use it in GitHub Desktop.
Completable future example.
package completablefutureexample;
import java.util.Random;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class App {
public static void main(String[] args) {
CompletableFuture<Integer> completableFuture = new CompletableFuture<>();
//Define your flow
completableFuture.thenApply((integer) -> {
int randomNumber = 0;
try {
randomNumber = generateRandomNumber();
System.out.println("Adding " + integer + " to the random number " + randomNumber);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(
"Generated random number=" + randomNumber + " from thread : " + Thread.currentThread()
.getName());
return randomNumber + integer;
}).thenApplyAsync(integer -> {
System.out.println("Got result from the first thread.");
return integer + 500;
}).thenAccept(integer -> {
System.out.println("Added 500 to the result. Terminating the completable future.");
});
//Start the processing
completableFuture.complete(10);
}
private static int generateRandomNumber() throws InterruptedException {
int number = new Random().nextInt(100);
System.out.println("Sleeping for " + number + "ms");
Thread.sleep(number);
return number;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment