35 lines
1.0 KiB
Java
Raw Normal View History

// concurrent/Batter.java
2016-12-30 17:23:13 -08:00
// (c)2017 MindView LLC: see Copyright.txt
// We make no guarantees that this code is fit for any purpose.
// Visit http://OnJava8.com for more book information.
import java.util.concurrent.*;
import onjava.Nap;
public class Batter {
static class Eggs {}
static class Milk {}
static class Sugar {}
static class Flour {}
static <T> T prepare(T ingredient) {
2017-01-22 16:48:11 -08:00
new Nap(0.1);
return ingredient;
}
2017-01-02 14:22:25 -08:00
static <T> CompletableFuture<T> prep(T ingredient) {
return CompletableFuture
.completedFuture(ingredient)
2017-01-02 14:22:25 -08:00
.thenApplyAsync(Batter::prepare);
}
public static CompletableFuture<Batter> mix() {
2017-01-02 14:22:25 -08:00
CompletableFuture<Eggs> eggs = prep(new Eggs());
CompletableFuture<Milk> milk = prep(new Milk());
CompletableFuture<Sugar> sugar = prep(new Sugar());
CompletableFuture<Flour> flour = prep(new Flour());
CompletableFuture
.allOf(eggs, milk, sugar, flour)
.join();
2017-01-22 16:48:11 -08:00
new Nap(0.1); // Mixing time
return
CompletableFuture.completedFuture(new Batter());
}
}