[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/CSapprenticeWT/OnJava8-Examples/master/concurrent/Batter.java [Back]  [Original]

// concurrent/Batter.java
// (c)2021 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 prepare(T ingredient) {
    new Nap(0.1);
    return ingredient;
  }
  static  CompletableFuture prep(T ingredient) {
    return CompletableFuture
      .completedFuture(ingredient)
      .thenApplyAsync(Batter::prepare);
  }
  public static CompletableFuture mix() {
    CompletableFuture eggs = prep(new Eggs());
    CompletableFuture milk = prep(new Milk());
    CompletableFuture sugar = prep(new Sugar());
    CompletableFuture flour = prep(new Flour());
    CompletableFuture
      .allOf(eggs, milk, sugar, flour)
      .join();
    new Nap(0.1); // Mixing time
    return
      CompletableFuture.completedFuture(new Batter());
  }
}

Web Proxy Viewer  |  New URL  |  Original Page