Я буду использовать исполнители потоков, чтобы выполнить некоторую фоновую работу с rxkotlin, я установил размер пула потоков равным 3, но моя проблема заключается в том, что во время моей фоновой операции он использует только один поток из 3, что замедляет мою фоновую операцию
Класс исполнителя
class ThreadExe : Executor{
companion object {
private const val THREAD_POOL_SIZE = 3
}
private val executor: Executor =
Executors.newFixedThreadPool(THREAD_POOL_SIZE)
override fun execute(runnable: Runnable) {
executor.execute(runnable)
}
}
Выше мой класс исполнителя, отвечающий за создание потока.
Я буду вызывать мою фоновую задачу, как показано ниже
getSomeDataFromNetworkProcessWithDB()
.subscribeOn(Schedulers.from(ThreadExe()))
.observeOn(AndroidSchedulers.mainThread())
.subscribe()
fun getSomeDataFromNetworkProcessWithDB() {
Observable.fromIteratable(someDataList())
.flatMap {
getSomeNetworkData()
}
.flatMap {
doSomeDbOperation()
}
}
Моя проблема с приведенным выше кодом заключается в том, что все эти сети и операции с БД работают последовательно с одним и тем же потоком, так как мы дали пул потоков размером 3, он должен отправлять сетевой запрос 3 параллельно, но запрос идет последовательно
Может кто-нибудьпомочь мне решить эту проблему?