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(String.valueOf(++createdThreadCount));

            start();

            try {
                this.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

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

        public void run(){
            if(createdThreadCount > 14)
                return;
            System.out.println(new GenerateThread());
        }
    }
}