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) 选择的单线程工作程序按顺序从队列中拾取它们。
我想知道 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) 选择的单线程工作程序按顺序从队列中拾取它们。