No Description

CompletableFutureBuilder.java 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package fr.natan.akkastreamfileprocessingapi.futurecompleteness;
  2. import scala.collection.IndexedSeq;
  3. import scala.concurrent.Future;
  4. import java.util.concurrent.CompletableFuture;
  5. import java.util.concurrent.Executors;
  6. import java.util.concurrent.TimeUnit;
  7. import java.util.logging.Logger;
  8. public class CompletableFutureBuilder<T> {
  9. private static final Logger logger = Logger.getLogger("log");
  10. public static<T> CompletableFuture<T> buildcompletableFuture1(Future<T> futureT) {
  11. CompletableFuture<T> completableFuture = new CompletableFuture<>();
  12. Executors.newSingleThreadExecutor().submit(() -> {
  13. while(!futureT.isCompleted()){
  14. try {
  15. TimeUnit.MILLISECONDS.sleep(300);
  16. } catch (InterruptedException e) {
  17. throw new RuntimeException(e);
  18. }
  19. }
  20. T task = futureT.value().get().get();
  21. completableFuture.complete(task);
  22. });
  23. return completableFuture;
  24. }
  25. public static <T> CompletableFuture<IndexedSeq<T>> buildcompletableFuture2(Future<IndexedSeq<T>> futureListT) {
  26. CompletableFuture<IndexedSeq<T>> completableFuture = new CompletableFuture<>();
  27. Executors.newSingleThreadExecutor().submit(() -> {
  28. while (!futureListT.isCompleted()) {
  29. try {
  30. TimeUnit.MILLISECONDS.sleep(300);
  31. } catch (InterruptedException e) {
  32. throw new RuntimeException(e);
  33. }
  34. }
  35. IndexedSeq<T> task = futureListT.value().get().get();
  36. completableFuture.complete(task);
  37. });
  38. return completableFuture;
  39. }
  40. }

Powered by TurnKey Linux.