Рекурсивное создание нитей

  • 9
  • Недоступна
1. Измени класс GenerateThread так, чтобы он стал нитью. 2. Создай конструктор GenerateThread, который должен: 2.1. Вызвать конструктор суперкласса с параметром String - номером созданной нити. Используй createdThreadCount. 2.2. Запустить текущую нить. 2.3. Номер первой нити должен начинается с 1.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (170)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Petrusiova19 уровень
28 февраля, 10:32
сбила с толку фраза в условии: "Начни печатать toString." Как это - начать? Тут или напечатать, или нет) По итогу сделал точно как в требованиях, все чудом получилось
Lyudmila Grayvoronskaya18 уровень, Одесса
25 февраля, 12:20
Используйте - IF!!! while- НЕ проходит!
Александр19 уровень, Казань
25 февраля, 09:45
Споткнулся на том, что первый поток мы создаем в main, и далее этот поток создает следующий в run и т.д пока createdThreadCount < count: изначально всю проверку делал в main.
Демин Андрей20 уровень
7 февраля, 07:59
сделал по уму, в майне цикл и сразу вывод, все красиво и хорошо, но валидатор хочет что бы вы в майне создали одну нить, а остльные 14 в ране. из за этого 2 попытки плюс :(
Юлия18 уровень, Санкт-Петербург
1 февраля, 20:41
это жесть! первая задача, которую я решала больше часа, решила по моему чисто случайно и вообще не правильно (выводились потоки с 15 по 2, а потом 16) за 7 попыток, и так и не поняла, что происходит, пока не прочитала все комменты ниже и не уверена, точно ли поняла вообще большой респект всем кто сам смог буду очень рада, если кто нибудь поделится информацией, которая помогла решить - статьями там, главами книг итд
S3R3N1TY28 уровень, Санкт-Петербург
25 января, 22:04
Чтобы понять что происходит надо дебажить и заходить в каждый поток- смотреть как он отрабатывает свой run() Интересно, в начале сделал неправильно в методе run() прописал
while(createdThreadCount<Solution.count)
               System.out.println(new GenerateThread());
а результат такой же(но не точно) - попробуйте подебажить такой вариант и сравнить с верным) Будет ли рекурсивный вызов в таком случае с while ? Я продебажил и знаю ответ, а вы ? Не забудьте выставить в положение Thread точку остановки- и поставьте обязательно одну из точек на  run()
Oleksandr Myrko19 уровень, Львов
26 января, 16:51
"Если количество созданных нитей меньше Solution.count". Ну і треба розуміти принцип роботи рекурсії.
Artur38 уровень
25 января, 15:17
вроде и интересно, и решать получается, но есть стойкое ощущение, что я вообще не понимаю, что делаю)
Jin Jo18 уровень
30 января, 11:21
тоже самое
Maksim29 уровень, Санкт-Петербург
10 января, 09:34
7 попыток. Надо было писать:
return getName() + " created";
и
super("" + ++createdThreadCount);
Причем у меня вывод был: 2 created 14 created 12 created 8 created 13 created 15 created 9 created 10 created 5 created 7 created 4 created 6 created 11 created 3 created 1 created
Владимир Настоящий31 уровень, Санкт-Петербург
21 декабря 2018, 20:24
super("" + ++createdThreadCount);
Igor18 уровень, Санкт-Петербург
10 января, 09:20
setName(String.valueOf(createdThreadCount)); так плохо ?
CEO31 уровень
17 января, 09:34
по идее так лучше
Роман17 уровень
17 января, 09:56
super(Integer.toString(++createdThreadCount));
Petrusiova19 уровень
28 февраля, 10:28
super(String.valueOf(++createdThreadCount));
Igor_kj20 уровень, Киев
17 декабря 2018, 18:39
с 3-й попытки, не мог понять почему дважды выводится первая нить, а все просто в run-не нужно вывод и создание нити объединить)))
Shamil20 уровень
1 февраля, 16:39
То же самая фигня так:
new GenerateThread()
System.out.println(this);
и так:
System.out.println(new GenerateThread());
есть не большая разница сосредоточьтесь и за минуты 2 3 и поймете