Schedulers.io()关于并行数据库搜索

时间:2016-07-09 17:12:48

标签: rx-java

我想知道当我并行访问数据库表时是否应该使用Schedulers.io()或Schedulers.newThread()。

例如,如果我使用Schedulers.io()从数千个并行的表中选择记录,那么新创建的许多线程都在任务之后的线程池中。

Observabe.just("table1", "table2", "table3"...)
    .flatMap(t -> {
        // creating the observable that emits the record
        return Observable create(s -> {
                   Record rec = selectFrom(t);
                   s.onNext(rec);
                   s.onCompleted();
                 })
                 .subscribeOn(Schedulers.io()); // select in parallel
    })...

但是,如果这样的任务是夜间批处理,那么这些线程不必在线程池中,因为大部分时间都不需要它们。

在这种情况下,我认为我应该使用Schedulers.newThread()。是不是?

1 个答案:

答案 0 :(得分:0)

如果您想要并行限制io工作,请使用自定义Scheduler

Scheduler scheduler = Schedulers.from(Executors.newFixedThreadPool(6));