В этом коде у меня есть два метода, использующих библиотеку vavr. Из этой библиотеки я использую Future с методом andThen, этот метод запускается, когда будущее завершено, и это происходит синхронно, но когда поток вызывает метод "printTime" в этом методе, все программы останавливаются, и тест успех.
это метод
public void printTime(String m){
String pattern = "HH:mm:ss:SSS";
SimpleDateFormat formato = new SimpleDateFormat(pattern);
Date date = new Date();
String dateString = formato.format(date);
String retorno = dateString+" "+m;
System.out.println(retorno);
}
и это тест
@Test
public void futuroAndThen() {
Future<String> f1 = Future.of(()->"Julian");
Future<String> f2 = Future.of(()->"Carvajal");
Future<String> f3 = Future.of(()->"Montoya");
Future<String> fResult = f3.andThen(x-> {
System.out.println(x.get());
System.out.println(Thread.currentThread().getName());
printTime("andThen2"+Thread.currentThread().getName());
}).andThen(y->{
System.out.println("y:"+y.get());
System.out.println(Thread.currentThread().getName());
f2.andThen(x->{
System.out.println("f2: "+x.get());
System.out.println("thread f2 "+Thread.currentThread().getName());
});
printTime("andThen2"+Thread.currentThread().getName());
});
}
наконец, результат в методе printTime:
Montoya
pool-1-thread-3
y:Montoya
pool-1-thread-1
f2: Carvajal
thread f2 pool-1-thread-3
и с методом:
Montoya
pool-1-thread-1
но в некоторые моменты консоль пуста.
Большое спасибо:)