Поддерживает ли rx- java IO Scheduler порядок? - PullRequest
1 голос
/ 09 апреля 2020

Мне интересно, будет ли 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 порядок?

1 Ответ

4 голосов
/ 09 апреля 2020

Да, реактивный поток поддерживает порядок событий, даже если вы передаете события другому планировщику, подобному этому.

Внутренне события помещаются в очередь, и один потоковый рабочий выбирается планировщик (, как описано здесь ) выбирает их из очереди по порядку.

...