用java将IO进程的值实时传递给另一个类



我有一个基本问题,在使用过程中需要澄清
所以,如果我在Java中有一个类,比如IOReadWrite.java,在那里我做一些IO读/写。因此,它可能有一个始终连接的环路,类似于:

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

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

然而,我想要的是能够实时获得这些结果,这样,只要输入流上有什么东西,我就可以在我的前端类中获得它,用它做我想做的任何事情。

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

你能建议一下实时获取此类信息的正确方法是什么吗?

您可以执行此

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

相关内容

最新更新