rx-java IO Scheduler 是否维持秩序?

Does rx-java IO Scheduler maintains order?

我想知道 Schedulers.io() 是否会按照调用者的顺序执行任务。

public class SaveTest {

    @Inject
    private MyRepository myRepository;

    public void save()  {
        Observable.range(0, 20)
                .map(l -> new MyModel(l))
                .observeOn(Schedulers.io())
                .subscribe(myRepository::save);
    }
}

插入新数据时,即使不遵守顺序也没有问题。但是在更新 ex 时:

    BankAccount account = new BankAccount();
    account.deposit(500);
    account.withdraw(50);

并且每个操作都会导致反应流中的保存,顺序非常重要。

我的问题是:IO Scheduler 是否维持秩序?

是的,反应流会维护事件的顺序,即使您像这样将事件交给不同的调度程序也是如此。

在内部,事件被放入队列中,调度程序 (as documented here) 选择的单线程工作程序按顺序从队列中拾取它们。