1. Измени класс GenerateThread так, чтобы он стал нитью. 2. Создай конструктор GenerateThread, который должен: 2.1. Вызвать конструктор суперкласса с параметром String — номером созданной нити. Используй countCreatedThreads. 2.2. Запустить текущую нить. 2.3. Номер первой нити должен начинается с 1. 3. Переопредели метод toString, для этого внутри GenerateThread нажми Alt+Insert -> Override Methods. Начни печатать toString. 3.1. Метод toString должен возвращать № текущей нити и слово « created«. Используй getName(). Пример: «8 created» 4. Пока количество созданных нитей меньше Solution.count метод run должен: 4.1. Создавать новую нить типа GenerateThread. 4.2. Выводить в консоль созданную в пункте 4.1. нить. 5. В итоге должно быть выведено в консоль 15 строк. Требования: 1. Класс GenerateThread должен быть унаследован от Thread. 2. В классе GenerateThread должен быть открытый конструктор без параметров. 3. Конструктор класса GenerateThread должен увеличивать значение countCreatedThreads и передавать его в виде строки в конструктор суперкласса. 4. Конструктор класса GenerateThread должен запускать нить. 5. Метод toString класса GenerateThread должен возвращать имя нити и слово " created". Пример: "8 created". 6. Если количество созданных нитей меньше Solution.count, метод run должен создать новую нить типа GenerateThread. 7. Если количество созданных нитей меньше Solution.count, метод run должен вывести созданную нить в консоль. 8. Вывод программы должен соответствовать заданию, показывать, что все 15 нитей были созданы.
public class Solution {
    static int count = 15;
    static volatile int countCreatedThreads;

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

    public static class GenerateThread extends Thread {
        private static int  countCreatedThreads = 0;
        public GenerateThread(){
         super(String.valueOf(++countCreatedThreads));
            this.start();
        }

        public void run() {
            if(countCreatedThreads < count)
            {
                System.out.println(new GenerateThread());
            }
        }
        @Override
        public String toString(){
            return this.getName()+" created";
        }
    }
}