当在Schedulers.computation上订阅javarx2 Flowable时,如果任务超过线程池大小,会发生什么?
我读到了Scheduler,默认线程计数是可用的CPU数量。但是,谁来处理计划外的任务呢?
我如何了解它的行为?
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);
}
);答案的一个重要部分是,我在哪里可以了解到这些信息?因为我发现很难从official class description中获得
发布于 2018-06-26 18:37:40
默认调度器在使用Executors.newScheduledThreadPoolExecutor()调用创建工作线程时,不会限制调度的任务数量。
不幸的是,对于RxJava来说,这是一个不可恢复的情况,因为它不能向观察者发出错误信号,因为它可能会违反协议(并发)。(即,一般而言,错误信号也应该被调度,这可能是不可能的,因为这也可能被拒绝,另外另一端可能仍在并发执行。)
https://stackoverflow.com/questions/51038085
复制相似问题