繁体   English   中英

在java中实时将IO Process的值传递给另一个类

[英]passing values of IO Process to another class in real time in java

我有一个基本问题,我需要对其进行一些澄清。
所以如果我在Java中有一个类说IOReadWrite.java ,我在那里做一些IO读/写。 所以它可能有一个总是连接的循环,如:

while ((line = stream.readLine()) != null){
     //incoming data
}  

现在我有另一个类,称之为FrontEnd.java ,我应该从IOReadWrite.java类实时显示结果。 通常情况下,如果我调用IO类的方法,除非整个IO操作完成并且我必须等待,否则我无法获得结果。

然而我想要的是能够实时获得这些结果,这样只要输入Stream上有东西,我就可以在我的FrontEnd类中得到它来做我想做的任何事情。

我想到的一个想法是在IOReadWrite.java中使用静态String变量并编写一个方法,它只返回此变量的值,我可以从主类中轮询此函数。 但我很确定这是一个非常糟糕的方法。

您能否建议实时获取此类信息的正确方法是什么?

你可以这样做

FrontEnd frontEnd = 
while ((line = stream.readLine()) != null){
     //incoming data

     // notify immediately.
     frontEnd.displayLine(line);
}

displayLine的作用取决于您对该类的实现。 你能否提供一下班级对这些信息的更多细节?

它可以做的事情是

private final BlockingQueue<String> linesQueue = ...

public void displayLine(String line) {
     linesQueue.add(line);
}

// somewhere else, in another thread.
String line = linesQueue.take(); // wait for a line.

String line = linesQueue.poll(); // get the next or null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM