0

私はただの初心者で、Java を学ぼうとしています

ターゲット - Java でいくつかのフローを作成してみてください。私のプログラムは、3 つのフローと 1 つのメイン フローを作成して停止する必要があります。

やったこと:

Runnable を実装したクラスを作成

class NewThread implements Runnable {
String name;
Thread t;

NewThread(String threadname){
    name = threadname;
    t = new Thread (this, name);
    System.out.println(t);
    t.start();
}

public void run (){
    try {
        System.out.println("111");// why cant see it?
        Thread.sleep(1000);
    }
    catch (InterruptedException e){
        System.out.println(e);
    }
    System.out.println("End Thread");
}

そしてメイン:

 public class ThreadDemo {
 public static void main (String []args){
    new Thread ("F");
    new Thread ("S");
    new Thread ("T");

    try {
        Thread.sleep(10000);
    }
    catch (InterruptedException e){

    }
    System.out.println("End M");
}
}

111 の 3 つの文字列と 1 つの文字列 End M のような結果が得られると思います -

111
111
111
End M

しかし、私はちょうど得ます

 End M

私のプログラムの結果、なぜ私が3つの文字列を取得できないのか、誰かが言うことができますか?

すべてに感謝します。

4

4 に答える 4

2

コードを実行するにNewThreadは、ジェネリックではなくインスタンスを作成する必要があります。Threads

new NewThread("F");
...
于 2013-03-04T19:30:25.013 に答える
1

new Thread ("F");「F」という名前の新しいThreadオブジェクトを作成しますが、これはオブジェクトの 1 つと同じではありませんNewThread。それらのいずれも作成しないため、それらのコードが実行されることを期待しないでください。Threadまた、 の内部にを作成することは非常にまれRunnableです。代わりに、 を作成してから、とを保持する をRunnable作成するThreadRunnablestart()必要がありますThreadJava Concurrency チュートリアルは、問題を解決するのに役立つかもしれません。

于 2013-03-04T19:33:12.810 に答える
0

私の間違いを見つける

私は書かなければなりません

public static void main (String []args){
    new NewThread ("F");
    new NewThread ("S");
    new NewThread ("T");

それ以外の

 new Thread ("F");

今は大丈夫です。

于 2013-03-04T19:33:57.060 に答える
0

で次を使用しますpublic static void main

NewThread th1 = new NewThread ("F");
NewThread th2 = new NewThread ("S");
NewThread th3  =new NewThread ("T");
于 2013-03-04T19:30:17.923 に答える