0

次のコードを実行すると、スレッド r からの出力が受信されるため、スレッド r が起動されますが、エラーを示唆するエラーは出力されませんが、テスト フレーズは出力されません。これがスレッドの起動を超えて進行できないのはなぜですか? 続行する前にスレッドが停止するのを待ちますか?

while(x<y){
    Runnable r = new Rule1(2, 0);
    new Thread(r).start();
    System.out.println("value of x is: " + x);
    x++;
}

より早く完了するように、rule1 メソッドを変更しました。完了すると、「x の値」文字列がコンソールに書き込まれます。これは、メイン メソッドがスレッドの完了を待っていることを意味します。スレッドを起動することで、メインスレッドと新しいスレッドの両方を同時に実行できるように、スレッドが個別に実行されると考えました。この仮定は間違っていますか?これは rule1 のコードのサンプルです

    public class Rule1 implements Runnable {

 public Rule1(int z, int q){

        //do stuff

        }

        public void run(){
        }
}
4

2 に答える 2

1

条件 x < y が真でない可能性があるため、 while は実行されません

于 2010-10-21T17:40:02.313 に答える
0

Î 説明している動作を再現できません。コード

public static void main(String[] args) throws Exception {
    int y = 10;
    int x = 0;
    while(x<y){
        Runnable r = new Runnable() {
            @Override
            public void run() {
                for (;;) {

                }
            }
        };
        new Thread(r).start();
        System.out.println("value of x is: " + x);
        x++;
    }
}

出力を生成します

value of x is: 0
value of x is: 1
value of x is: 2
value of x is: 3
value of x is: 4
value of x is: 5
value of x is: 6
value of x is: 7
value of x is: 8
value of x is: 9
于 2010-10-21T17:24:22.333 に答える