Рассмотрим следующий фрагмент:
@Test
public void completableConcatTest() {
Completable.concat(completableTwoSeconds(), completableTwoSeconds())
.doOnCompleted(() -> System.out.println("Both completed."))
.await();
}
private Completable completableTwoSeconds() {
PublishSubject<Void> subject = PublishSubject.create();
CompletableFuture.supplyAsync(() -> {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
subject.onCompleted();
return null;
});
return subject.doOnCompleted(() -> System.out.println("I'm completed." + Instant.now())).toCompletable();
}
При запуске тест выдает следующий вывод:
I'm completed.2018-05-11T10:07:26.359Z
I'm completed.2018-05-11T10:07:26.380Z
Both completed.
Очевидно, что два завершаемых набора выполняются параллельно, а не последовательно, как предполагалось.
Не могли бы вы объяснить, что я здесь не так делаю?
Заранее спасибо!