我有一个在其线程上发出的简单流。然后我有timeout()
,但是默认情况下会发出Computation
。有没有办法将与上游发出的线程传递给timeout()
? 因此它不会创建不必要的新线程吗?
scanResults()
.subscribeOn(Schedulers.io())
// part of library
.timeout(5, TimeUnit.SECONDS, Schedulers.io()), Obserable.just(specialValue())
我相信这会产生2个线程,对吧?
是否可以通过某种方式将当前线程的调度程序传递给超时参数,以便它停留在上游线程上?
如果有意义,也许像timeout(5, TimeUnit.SECONDS, { Scheduler(Thread.currentThread())}
,所以它仅是单线程
答案 0 :(得分:0)
无法执行此操作,因为您必须插入要由计时器中断的monad(Observable)中。在单个线程中实现此类行为的方式如下:
val list = listOf(Task1, Task2, Task3)
while(checkTimer() && list.isEmpty().not()) {
list.takeFirst().execute()
}
在一个monad中仅封装了一个操作的情况下,如何在不中断另一个线程的情况下检查时间?