RxScala:如何保持执行Observable.interval的线程还活着?

Bin*_*mas 1 multithreading scala rx-java rx-scala

我正在尝试编写一个简单的RxScala程序:

import rx.lang.scala.Observable

import scala.concurrent.duration.DurationInt
import scala.language.{implicitConversions, postfixOps}

object Main {
  def main(args: Array[String]): Unit = {
    val o = Observable.interval(1 second)
    o.subscribe(println(_))
  }
}
Run Code Online (Sandbox Code Playgroud)

运行该程序时,看不到任何打印输出。我怀疑这是因为该线程在Observable.interval模具中产生数字。我注意到waitFor(o)RxScalaDemo中有一个对的调用,但是我不知道该从何处导入。

如何使该程序始终运行以打印数字序列?

Bij*_*men 5

这是阻止主线程退出的一种方法:

val o = Observable.interval(1 second)
val latch = new CountDownLatch(1)
o.subscribe(i => {
  print(i)
  if (i >= 5) latch.countDown()

})
latch.await()
Run Code Online (Sandbox Code Playgroud)

这是一种相当常见的模式,用于CountDownLatch.await在完成工作后先阻塞主线程,然后倒计时闩锁,从而释放主线程