Почему если
public void run() {
System.out.println(this);
if (createdThreadCount < count) {
new GenerateThread();
}
}
дублируется первая строка и выводится упорядочено:
1 created
1 created
2 created
...
А если так
public void run() {
// System.out.println(this);
if (createdThreadCount < count) {
System.out.println(new GenerateThread());
}
}
не дублируется первая строка но выводится неупорядочено и вообще валидатор не принимает.
Валидатор выдает ошибку "Конструктор класса GenerateThread должен увеличивать значение createdThreadCount и передавать его в виде строки в конструктор суперкласса."
package com.javarush.task.task16.task1623;
/*
Рекурсивное создание нитей
*/
public class Solution {
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{
private static volatile int createdThreadCount = 0;
public GenerateThread() {
super(String.valueOf(++createdThreadCount));
start();
}
public void run() {
// System.out.println(this);
if (createdThreadCount < count) {
System.out.println(new GenerateThread());
}
}
public String toString() {
return getName() + " created";
}
}
}