static int count = 15;
static volatile int createdThreadCount;
public static void main(String[] args) {
System.out.println(new GenerateThread());
}
public static class GenerateThread extends Thread{
public GenerateThread() {
super(String.valueOf(++createdThreadCount));
start();
try {
this.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
public String toString() {
return getName() + " created";
}
public void run(){
if(createdThreadCount > 14)
return;
System.out.println(new GenerateThread());
}
}
}Kircheis Siegfried
24 уровень
Подскажите, пожалуйста, почему цикл выводит 16 нить, если оставить условие if(createdThreadCount > 14) в методе run(). Исправил на 14 и выводит 15 нить, не могу понять почему.
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Никита
4 мая 2022, 18:46
а вот так не пробовали?
0
Yuk 1с
1 февраля 2022, 06:17
Предполагаю: if(createdThreadCount > 14) // 14 нить создана всё норм.
return;
System.out.println(new GenerateThread()); // Здесь мы создаём 15-ую и выводим, возвращаемся к if... и прекращаем.
0
Сергей
29 января 2022, 15:34
Наверно опечатка в вопросе, хотел сказать если условие написано так
Допустим у нас уже создано 15 нитей, но 15 не больше 15, значит под это условие мы не попадаем, переходим дальше и тут создается 16-ая нить.
0