-2

ここでは本当にばかげているかもしれませんが、基本的にはバッファとスレッドがあります。

ユーザーから大量のメッセージを取得するためのバッファを作成しました。バッファからメッセージを取得するために常にループするスレッドを作成したいと考えています。

これは非常に単純に聞こえますが、何らかの理由で機能していません。

バッファとスレッドはどちらも通常の Java クラスです (メインではありません)。バッファと DisplayThread。

彼らがどのように連携するべきなのか、頭が回らないようです。

これは正しいですか?または、何か不足していますか?

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()を配置する理由がわかりません。基本的に、これらの行はメソッドから呼び出す必要があります。たとえば、メインから呼び出されることになっているとすると、次のようになります。

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 に答える