本文介绍了并行数据库搜索的Schedulers.io()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不知道并行访问数据库表时应该使用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()。对吗?
推荐答案
如果要限制io并行工作,请使用自定义Scheduler
:
Scheduler scheduler = Schedulers.from(Executors.newFixedThreadPool(6));
这篇关于并行数据库搜索的Schedulers.io()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!