将SpringAsync重构为RxJava方式

将SpringAsync重构为RxJava方式,java,spring,asynchronous,rx-java,Java,Spring,Asynchronous,Rx Java,我是RxJava新手,我有一个项目目前正在使用SpringAsync,试图将它重构成RxJava的方式,不知道什么是优雅的方式 我们有一个类UserService,它完成了繁重的工作 @Async public class UserService { public Future<User> fetchUsers(String space, String username) { // some other thing ... // call network

我是RxJava新手,我有一个项目目前正在使用SpringAsync,试图将它重构成RxJava的方式,不知道什么是优雅的方式

我们有一个类UserService,它完成了繁重的工作

@Async
public class UserService {
  public Future<User> fetchUsers(String space, String username) {
    // some other thing
    ...

    // call network APIs to fetch users for a space
    return new AsyncResult<>(clientOf.fetechUsers(space, username));
  }
}
@Async
公共类用户服务{
公共用户(字符串空间、字符串用户名){
//还有别的事
...
//调用网络API获取空间的用户
返回新的AsyncResult(clientOf.fetechUsers(空格、用户名));
}
}
然后在调用者中:

List<Future<User>> users = new ArrayList<>();
String username = "alice";
for(String space : Arrays.asList("SPACE1", "SPACE2")) {
  users.add(userService.fetchUsers(space, username));
}

List<User> resultUsers = new ArrayList<>();
for(Future<User> user: users) {
  resultUsers.add(user.get());
}
return resultUsers;
List users=new ArrayList();
字符串username=“alice”;
for(字符串空间:Arrays.asList(“SPACE1”、“SPACE2”)){
add(userService.fetchUsers(space,username));
}
List resultUsers=new ArrayList();
for(未来用户:用户){
add(user.get());
}
返回结果者;

在调用者中,我们要并行调用两个空格的userService,然后合并结果,我应该如何用RxJava完成它?我看到了一些关于Tread的例子,我必须自己管理Tread吗?还是有一种优雅的方式来完成这项工作?

阅读我发现的关于RxJava 2的更多信息,我意识到我可以做以下事情:

Observable.just("SPACE1", "SPACE2")
          .observeOn(Schedulers.io())
          .map(space -> userService.fetchUsers(space, username))
          .blockingSubscribe(System.out::println);