Недоступное выражение после запуска нового потока - PullRequest
0 голосов
/ 21 октября 2010

Когда запускается следующий код, он запускает поток r, так как вывод от него получен, но тестовая фраза никогда не выводится, хотя нет выводимых ошибок, которые бы указывали на ошибку. Почему это не может прогрессировать после запуска потока? Будет ли ожидание остановки потока перед продолжением?

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

Я изменил метод rule1, чтобы он завершался раньше. Как только он завершается, в консоль записывается строка «value of x is». Это подразумевает, что мой основной метод ожидает завершения потока. Я думал, что при запуске потока он будет запускаться отдельно, что позволит одновременно запустить основной и новый поток. Я ошибаюсь в этом предположении? Это образец кода для правила1

    public class Rule1 implements Runnable {

 public Rule1(int z, int q){

        //do stuff

        }

        public void run(){
        }
}

Ответы [ 2 ]

1 голос
/ 21 октября 2010

Может быть условие x

0 голосов
/ 21 октября 2010

Î не может воспроизвести поведение, которое вы описываете; код

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...