printThread() } .subscribeOn(Schedulers.computation()) .flatMap { printThread() Observable.timer(1, TimeUnit.SECONDS) .subscribeOn(Schedulers.single()) .doOnSubscribe { printThread() } }.subscribe { printThread() } //1. Print thread, IO //2. Change thread, Main //3. Print thread, Main Emit «Hey», IO Emit «Hey», IO Emit «Hey», IO Emit «Hey», Main Emit «Hey», Main Emit «Hey», Main