Когда запускается следующий код, он запускает поток 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(){
}
}