美文网首页android开发
rxjava多线程并行执行任务

rxjava多线程并行执行任务

作者: e1f48f6c2de0 | 来源:发表于2018-01-02 10:26 被阅读0次

并行执行是将.subscribeOn(Schedulers.~~~)写在flatmap里面。

    val executor = Executors.newFixedThreadPool(10)
    Observable.range(0, 20)
            .flatMap { i ->
                Observable.create<Int>({ e -> e.onNext(sleep(i)) })
                        .subscribeOn(Schedulers.from(executor))
            }

这样给每一个任务分别指定执行线程,注意这里如果不使用线程池Schedulers.from(executor),而是Schedulers.newThread(),io()等,会给每一个任务都开线程,任务太多的话,资源不够,程序可能崩溃

如果写在flatmap外面:

fun main(args: Array<String>) {
    val executor = Executors.newFixedThreadPool(10)
    Observable.range(0, 20)
            .flatMap { i -> Observable.create<Int>({ e -> e.onNext(sleep(i)) }) }
            .subscribeOn(Schedulers.from(executor))
            .subscribe { i -> println(i) }

}
fun sleep(i : Int): Int{
    Thread.sleep(100)
    return i
}

``
打印顺序是0,1,2,3,...。用时2秒

并行执行

fun main(args: Array<String>) {
    val executor = Executors.newFixedThreadPool(10)
    Observable.range(0, 20)
            .flatMap { i -> 
                Observable.create<Int>({ e -> e.onNext(sleep(i)) })
                        .subscribeOn(Schedulers.from(executor)) 
            }
            .subscribe { i -> println(i) }

}
fun sleep(i : Int): Int{
    Thread.sleep(100)
    return i
}

``
打印是出的字符无序的,用时0.3秒

相关文章

  • rxjava多线程并行执行任务

    并行执行是将.subscribeOn(Schedulers.~~~)写在flatmap里面。 这样给每一个任务分别...

  • Kotlin:该如何实现多线程同步?

    问题背景需执行多线程任务:任务1、任务2并行执行;等全部执行完成后,执行任务3。 实现方式「多线程同步」。Kotl...

  • 任务提交方式与队列的总结

    Grand Central Dispatch(GCD)是苹果推荐使用的多线程并行执行任务的方案,在多核硬件在 iO...

  • 关于串并行

    串行执行任务队列items 并行执行任务队列items 串行与并行的结合,即每次设定最多能并行n个异步任务

  • 03.记一次奇妙的线程池故障

    写在前面 咱们程序员都知道,多线程是个好东西,可以异步或者并行执行任务,提高程序性能,然而多线程又好比一把双刃剑,...

  • 原子类型与原子操作

    原子类型和原子操作 并行编程、多线程与C++11 常见的并行编程有多种模型:共享内存、多线程、消息传递等。 多线程...

  • RxJava第三篇,调度器Scheduler

    RxJava中Schedulers(调度器):Rxjava解决多线程问题的机制 种类: Schedulers.io...

  • RxJava 并行操作

    上一篇文章RxJava 线程模型分析详细介绍了RxJava的线程模型,被观察者(Observable、Flowab...

  • go 的并发机制

    并发与并行的概念 ① 多线程程序在单核cpu上运行就是并发;② 多线程程序在多核cpu上运行就是并行; gorou...

  • iOS - Multi-Thread

    概念篇 进程 线程 多线程 单核多线程 & 多核多线程 并行 & 并发 同步 & 异步 队列 队列 & 任务 的执...

网友评论

    本文标题:rxjava多线程并行执行任务

    本文链接:https://www.haomeiwen.com/subject/vxrfnxtx.html