Когда javarx2 Flowable подписывается на Schedulers.computation, что происходит, если задачи превышают размер пула потоков - PullRequest
0 голосов
/ 26 июня 2018

когда javarx2 Flowable подписывается на Schedulers.computation, что произойдет, если задачи превышают размер пула потоков?

Я прочитал этот планировщик, число потоков по умолчанию - это количество доступных процессоров.Но кто, если вообще заботится о незапланированных заданиях?

Как мне прочитать о его поведении?

    Flowable
            .fromArray(accountsMap.keySet().toArray())
            .flatMap(key ->

                Flowable
                    .just(key)
                    .subscribeOn(Schedulers.computation())
                    .doOnNext(sameKey -> {

                        //do my stuff

                    })
            )
            .blockingSubscribe(a ->
                {
                    logger.info("blockingSubscribe received: " + a);
                }
            );

Важная часть ответа - где мне прочитать эту информацию?как мне было трудно добиться от официального описания класса

1 Ответ

0 голосов
/ 26 июня 2018

Планировщики по умолчанию не ограничивают число запланированных задач, так как они используют вызов Executors.newScheduledThreadPoolExecutor() для создания рабочих. Больше работы, чем ядер - не проблема.

Однако, если вы используете пользовательский Executor, завернутый в планировщик, и он отклоняет работу, ошибка передается глобальному обработчику ошибок. К сожалению, это неустранимая ситуация для RxJava, поскольку он не может сигнализировать об ошибке наблюдателю из-за возможных нарушений протокола (параллелизма). (то есть, как правило, сигнал ошибки также должен быть запланирован, что может быть невозможно, так как это также может быть отклонено, плюс другая сторона может все еще выполняться одновременно.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...