/*
Рекурсивное создание нитей
*/
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{
        public GenerateThread(){
            super(++createdThreadCount + "");
            start();
        }
        @Override
        public void run() {
            if (createdThreadCount < count){
                System.out.println(new GenerateThread()); // тут вывожу в консоль новую нить
            }
        }
        @Override
        public String toString() {
            return currentThread().getName() + " created";//а так выводится - main created
            //return this.getName() + " created"; - так main не выводится
        }
    }
}
я немного плыву - как задать вопрос.. т.е. если я в toString() пишу currentThread().getName() - то туда каким то образом попадает поток main видимо потому что он в начале программы создает первый поток.. ? сложна при этом что интересно: он не заменяет собою в выводе 1 created или какой то другой номерной поток выводится:
1 created
2 created
main 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 и здесь мне тоже не совсем понятно.. как так получается.. счетчик ведь считает как и должен, но до 15 не доходит