Для чего в 26 строке метод слип?Что бы, когда запускается вторая по счету нить, перед ее запуском прошло время и она не начала исполняться быстрее первой нити?
package com.javarush.task.task16.task1623;

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

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

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

    }

    public static class GenerateThread extends Thread {

        public GenerateThread() throws InterruptedException {
            super(String.valueOf(++createdThreadCount));
            start();

        }

        public void run(){
            try {
                Thread.sleep(1); // Для чего вот здесь слип?  Когда запускается вторая по счету нить, что бы переде ее запуском прошло время и она не начала //..исполняться быстрее первой нити
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if(  createdThreadCount<count) {
                try {
                    System.out.println(new GenerateThread());
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

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