Нет описания

CompletableFutureBuilder.java 1.7KB

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

Powered by TurnKey Linux.