-2

我在这里可能真的很愚蠢,但本质上我有一个缓冲区和一个线程。

我已经制作了缓冲区以从用户那里获取一堆消息,并且我想创建一个线程来不断循环以从缓冲区中获取消息。

这听起来超级简单,但由于某种原因它不起作用。

缓冲区和线程都是普通的 Java 类(不是 main);缓冲区和显示线程。

我似乎无法理解他们应该如何一起工作。

这是正确的吗?还是我错过了什么?

public class DisplayThread extends Thread{

    DisplayThread Thread = new DisplayThread(Buffer);
    Thread.start();
    public void run(){
             while(true){
            //will do something          

     }
  }

}

我尝试在主类中创建一个缓冲区对象,然后将其传入,但它仍然不起作用。

我错过了什么?!这一定很明显,但我根本看不到。

4

2 回答 2

0

你已经有了基本的想法,但我不确定你为什么将新的 DisplayThread(Buffer) 和 Thread.start() 东西放在类的主体中。基本上,应该从方法调用这些行。例如,假设它们应该从 Main 调用,你会做这样的事情:

public static void main(String[] args){
    Buffer buffer = new Buffer();
    DisplayThread displayThread = new DisplayThread(buffer);
    displayThread.start();
}

在这种情况下,您将创建缓冲区对象,并将其传递给 DisplayThread。在您的显示线程中,您将创建一个 Buffer 的实例变量,以及一个用于设置它的构造函数,如下所示:

public class DisplayThread{
    Buffer buffer;
    public DisplayThread(Buffer buffer){
        this.buffer = buffer;
    }
}
于 2012-12-02T03:28:57.350 回答
0

这是我关于代码应该如何基于给定信息的想法。你怎么看?:

public class DisplayThread extends Thread{

private String[] buffer;
public DisplayThread(String[] buffer) {
    this.buffer = buffer;
}

public void run(){
    for(String str:buffer)
        System.out.println(str);
}

public static void main(String args[]) {
    String[] buffer = {"hello", "world"};
    DisplayThread thread = new DisplayThread(buffer);
    thread.start();
}

}

于 2012-12-02T03:40:54.280 回答