に加入し、スレッドプールにタスクを実行する簡単な例:考えるrxjava2 - 私はRxJavaまわりで私の頭を取得するには、次のタスクを試しています単一のスレッド
- URLのリストを
- ドゥそれぞれの結果については、スレッドプール
- 上の各URLに対してHTTPリクエスト(ここではなしマルチスレッド)のSQLiteデータベースにいくつかのデータを挿入
- ブロックの方法、それは
は、だから私はKotlinでそれを試してみた:
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
誰もこれがどのように機能するかについての私の誤解を訂正することはできますか?スレッドプールのすべてのスレッドを使用しないのはなぜですか?完了するまでメインのスレッドまたはブロックでサブスクライバを実行させるにはどうすればよいですか?