Скажем, у меня есть этот синхронный метод:
public FruitBowl getFruitBowl() {
Apple apple = getApple(); // IO intensive
Banana banana = getBanana(); // CPU intensive
return new FruitBowl(apple, banana);
}
Я могу использовать API параллелизма Java, чтобы превратить его в асинхронный метод, который будет выглядеть примерно так:
public Future<FruitBowl> getFruitBowl() {
Future<Apple> appleFuture = getAppleAsync(); // IO intensive
Future<Banana> bananaFuture = getBananaAsync(); // CPU intensive
return createFruitBowlAsync(appleFuture, bananaFuture); // Awaits appleFuture and bananaFuture and then returns a new FruitBowl
}
Каков идиоматический способ Rx сделать это, используя преимущества его планировщиков (io и вычисления) и возвращая Single?