fun main() { println("main starts") val disposables = CompositeDisposable() disposables.addAll( Completable.fromAction { routine(1, 500) }.subscribeOn(Schedulers.newThread()).subscribe(), Completable.fromAction { routine(2, 300) }.subscribeOn(Schedulers.newThread()).subscribe() ) Thread.sleep(600) println("main ends") disposables.dispose() }