Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一次监视多个流_Java_Multithreading_Scala_Concurrency_Stream - Fatal编程技术网

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中测试它,我对它做了一些修改,它对我很有用。都德-谢谢,把这个放在一个答案里,我会接受的。我只需要测试一下你提供的代码,它对我也适用。我想我没什么好回答的。