Java 一次监视多个流
我收集了一些流[双]。当我连接套接字并开始打印流中的值时,它可以工作:Java 一次监视多个流,java,multithreading,scala,concurrency,stream,Java,Multithreading,Scala,Concurrency,Stream,我收集了一些流[双]。当我连接套接字并开始打印流中的值时,它可以工作: stream1 foreach println 但是,如果我这样做,我只能从stream1获得值: stream1 foreach println stream2 foreach println 所以我写了其中一个: def monitorStream(label:String, stream:Stream[Double]) = { val streamMonitor = new Thread(new Run
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
这里没有打印我的实际流,这让我怀疑这与套接字有关。您对使用zip有什么感觉?意思:stream1-zip-stream2-foreach-println我曾经玩弄过使用zip的想法,但是如果我走这条路,我将不得不压缩很多东西。我想先看看外面还有什么。谢谢嗯,关于你的方法。为了更好地在REPL中测试它,我对它做了一些修改,它对我很有用。都德-谢谢,把这个放在一个答案里,我会接受的。我只需要测试一下你提供的代码,它对我也适用。我想我没什么好回答的。