kirillrakhman
07/12/2016, 2:26 PMfun main(args: Array<String>) {
val mutex = Semaphore(0)
val random = Random()
val observable = Observable.interval(1000, TimeUnit.MILLISECONDS)
.map { random.nextInt(10) }
.doOnEach { println("Emitted: $it") }
val shared = observable.share()
val threshold = 6
val alerts = shared.switchMap {
when {
it < threshold -> Observable.timer(3000, TimeUnit.MILLISECONDS).map { Alert() }
else -> Observable.never()
}
}
alerts.subscribe({ println(it) }, { it.printStackTrace() }, { mutex.release() })
mutex.acquire()
}