public static class GenerateThread extends Thread {
        public GenerateThread() {
            super(String.valueOf(++createdThreadCount));
            start();
            try {
                this.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

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

        @Override
        public void run() {
            if (count > createdThreadCount) {
                System.out.println(new GenerateThread());
            }
        }
Объясните почему в таком варианте выводит не имя вновь созданной нити???