我用下面的任務試驗,以讓我的頭周圍RxJava的簡單的例子:rxjava2 - 在一個線程池執行任務,訂閱在單個線程
- 給出的URL列表
- 待辦事項用於在線程池
- 對於每個結果每個URL一個HTTP請求中插入一些數據到SQLite數據庫(這裏沒有多線程)
- 塊中的方法,直到它完成
所以,我想它在科特林:
val ex = Executors.newFixedThreadPool(10)
Observable.fromIterable((1..100).toList())
.observeOn(Schedulers.from(ex))
.map { Thread.currentThread().name }
.subscribe { println(it + " " + Thread.currentThread().name }
我希望它打印
pool-1-thread-1 main
pool-1-thread-2 main
pool-1-thread-3 main
pool-1-thread-4 main
....
但是它打印:
pool-1-thread-1 pool-1-thread-1
pool-1-thread-1 pool-1-thread-1
pool-1-thread-1 pool-1-thread-1
任何人都可以糾正我關於如何工作的誤解?爲什麼它不使用線程池的所有線程?我如何讓我的訂閱者在主線程上運行或阻塞直到完成?