Задача по рекурсии нитей

 
 
 
Сообщения:17
Доброго дня, друзья! Решаю задачи на javarush.ru и вот такой возник вопрос по задаче: почему в выводе присутствует строка 15 created, ведь по сути строка 32 - System.out.println( new GenerateThread() ); для 15 потока недостижима??

public class Solution {
    static int count = 15;
    static volatile int countCreatedThreads;

    public static void main(String[] args) {
        System.out.println( new GenerateThread() );                 
    }

    public static class GenerateThread extends Thread {
        public GenerateThread()
        {
            super( String.valueOf( ++countCreatedThreads ) );
            start();
        }

        @Override
        public void run()
        {
            while ( countCreatedThreads < count )
            {
                System.out.println( new GenerateThread() );
                try
                {
                    sleep(100);
                }
                catch (InterruptedException e)
                {}
            }
        }

        @Override
        public String toString()
        {
            return getName() + " created";
        }


    }
}


out
1 created
2 created
3 created
4 created
5 created
6 created
7 created
8 created
9 created
10 created
11 created
12 created
13 created
14 created
15 created

Заранее благодарен за ответ -)
Изменен:16 сен 2016 10:22
 
 
Сообщения:456
LunatiKo:
для 15 потока недостижима??

С чего вы это взяли?
 
 
Сообщения:30
Переменная countCreatedThreads инициализируется нулем. Получается цикл работает при значениях этой переменной от 0 до 14 что равно 15 итерациям. А так как в строке 12. у вас префексный инкремент этой переменной имена потокам выдаются от 1 до 15.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет