Я буду использовать исполнители потоков для выполнения некоторой фоновой работы с 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 сетевых запроса параллельно, но запрос идет последовательно
Может ли кто-нибудь помогите мне решить эту проблему?