一次监控多个流

时间:2014-07-18 17:17:24

标签: java multithreading scala concurrency stream

我有一些Stream [Double]的集合。当我连接套接字并开始从流中打印值时,它可以工作:

stream1 foreach println

但是,如果我这样做,我只能从stream1获取值:

stream1 foreach println
stream2 foreach println

所以我写了其中一篇:

  def monitorStream(label:String, stream:Stream[Double]) = {
    val streamMonitor = new Thread(new Runnable {
      def run() {
        stream foreach {x => println(label,x)}
      }
    })
    streamMonitor.start
  }

但在致电

monitorStream(label1,stream1)
monitorStream(label2,stream2)

我仍然只获得stream1的输出。如何同时监控这些流的输出?

由于

加法:

如下定义流程:

val stream1 = Stream.from(1).map(_.toDouble)
val stream2 = stream1.filter(_ % 5 == 0)

但不是我的实际流,每秒产生一个双倍。此外,

stream1.zip(stream2) foreach println

打印 nothing (我这里的实际流),这让我怀疑这与套接字有关。

0 个答案:

没有答案