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

在java中实时将IO进程的值传递给另一个类,java,multithreading,static,inputstream,Java,Multithreading,Static,Inputstream,我有一个基本问题,我需要澄清一下它的用法。 因此,如果我有一个Java类,比如说IOReadWrite.Java,我在其中执行一些IO读/写操作。因此,它可能有一个始终连接的循环,例如: while ((line = stream.readLine()) != null){ //incoming data } 现在我有了另一个类,称之为FrontEnd.java,我应该在这里显示来自IOReadWrite.java类的实时结果。通常情况下,如果我调用IO类的方法,我无法得到结果,

我有一个基本问题,我需要澄清一下它的用法。
因此,如果我有一个Java类,比如说
IOReadWrite.Java
,我在其中执行一些IO读/写操作。因此,它可能有一个始终连接的循环,例如:

while ((line = stream.readLine()) != null){
     //incoming data
}  
现在我有了另一个类,称之为
FrontEnd.java
,我应该在这里显示来自
IOReadWrite.java
类的实时结果。通常情况下,如果我调用IO类的方法,我无法得到结果,除非整个IO操作完成,我必须等待

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

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

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

您可以这样做

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
private final BlockingQueue linesQueue=。。。
公共无效显示行(字符串行){
linesQueue.add(行);
}
//在其他地方,在另一个线程中。
String line=linesque.take();//等电话。
String line=linesque.poll();//获取下一个或空值

IOReadWrite
的操作在单独的线程中运行,对吗?如果没有,无论发生什么,你都会阻塞。如果是这样的话,你只需要在线程之间共享(并同步)一些数据结构(即使只是一个字符串)。@Viruzzo,谢谢,是的,它在另一个线程中,问题是这是一个通用方法,任何其他导入此库的类都可以使用它,所以在这种情况下,我不能从这个类调用外部函数,rahter我只需要为将要使用它的功能的用户提供一个前端。谢谢这个背景日志线程真的是我所寻找的,谢谢它将解决我的问题@Johnydep要么使用单例(如果只有一个前端或读取线程),要么在启动前将前端作为参数传递给读取线程。